Я не новичок в C++, однако концепция программирования Win32 для меня довольно нова. Во всяком случае, у меня возникли проблемы с получением координат X и Y, когда сообщение WM_NCHITTEST передается через WndProc. Для того, чтобы попытаться получить их прямо сейчас, я использую следующий код:C++ WndProc получить сообщение координаты X и Y
int x = LOWORD(lParam);
int y = HIWORD(lParam);
Я не совсем уверен, если он работает или нет, но я считаю, что это. Я где-то читал, что это фактически возвращает координаты x и y указателя на самом мониторе, а не относительно приложения.
Когда я сделал обширный поиск Google, пытаясь выяснить, как превратить его в координаты относительно приложения, я наткнулся на этот метод (или функция Я не в Java больше.: P):
Point relativePos = theControl.PointToClient(pos);
где pos - координаты x и y. Я бы очень хотел попробовать этот код, но я столкнулся с несколькими проблемами.
Прежде всего, точки не работают на C++. Я пробовал их, и они не работают. Во-вторых, в Win32 я не считаю, что Point определен. Я могу найти POINT, однако я не уверен, что это то же самое. Наконец, я, честно говоря, не совсем уверен, как определить суть.
Чтобы объяснить, зачем мне это нужно, я пытаюсь сделать окно перетаскиваемым только на 50 пикселей окна.
case WM_NCHITTEST:
hit = DefWindowProc(hWnd, message, wParam, lParam);
if(y < 50)
return HTCAPTION;
break;
Во всяком случае, ваша помощь значительно оценили.
Спасибо за помощь! Я немного поучался в этом посте. И да, я хочу область клиента, поскольку я создаю свой собственный ограничивающий прямоугольник внутри него. Еще раз спасибо! –