сообщение WM_NCHITTEST
Отправляется в окно, чтобы определить, какая часть окна соответствует определенной координате экрана. Это может произойти, например, при перемещении курсора, нажатии или освобождении кнопки мыши или в ответ на вызов функции, например WindowFromPoint. Если мышь не захвачена, сообщение отправляется в окно под курсором. В противном случае сообщение отправляется в окно, которое захватило мышь.
Окно получает это сообщение через функцию WindowProc .
#define WM_NCHITTEST 0x0084
Параметры
-
wParam
-
Этот параметр не используется.
-
lParam
-
Слово с низким порядком указывает координату x курсора. Координата относительно левого верхнего угла экрана.
Слово с высоким порядком задает координату курсора y. Координата относительно левого верхнего угла экрана.
Возвращаемое значение
Возвращаемое значение функции DefWindowProc является одним из следующих значений, указывая положение горячей точки курсора.
Возврат кода или значения | Description |
---|---|
|
В границе окна, у которых нет границы размера. |
|
В нижней горизонтальной границе окна с изменением размера (пользователь может щелкнуть мышь, чтобы изменить размер окна по вертикали). |
|
В левом нижнем углу границы окна с изменением размера (пользователь может щелкнуть мышь, чтобы изменить размер окна по диагонали). |
|
В правом нижнем углу границы окна с изменением размера (пользователь может щелкнуть мышь, чтобы изменить размер окна по диагонали). |
|
В строке заголовка. |
|
В клиентской области. |
|
В кнопке "Закрыть ". |
|
В фоновом режиме экрана или в разделительной строке между окнами (аналогично HTNOWHERE, за исключением того, что функция DefWindowProc создает системный сигнал для указания ошибки). |
|
В поле размера (аналогично HTSIZE). |
|
В кнопке справки. |
|
На горизонтальной полосе прокрутки. |
|
В левой границе окна с изменением размера (пользователь может щелкнуть мышь, чтобы изменить размер окна по горизонтали). |
|
В меню. |
|
В кнопке "Развернуть ". |
|
В кнопке "Свернуть ". |
|
В фоновом режиме экрана или на разделительной линии между окнами. |
|
В кнопке "Свернуть ". |
|
В правой границе окна с изменением размера (пользователь может щелкнуть мышь, чтобы изменить размер окна по горизонтали). |
|
В поле размера (аналогично HTGROWBOX). |
|
В меню окна или в кнопке "Закрыть " в дочернем окне. |
|
В верхней горизонтальной границе окна. |
|
В левом верхнем углу границы окна. |
|
В правом верхнем углу границы окна. |
|
В окне, которое в настоящее время охватывает другое окно в том же потоке (сообщение будет отправлено в базовые окна в одном потоке, пока один из них не возвращает код, который не является HTTRANSPARENT). |
|
В вертикальной полосе прокрутки. |
|
В кнопке "Развернуть ". |
Замечания
Используйте следующий код для получения горизонтальной и вертикальной позиции:
xPos = GET_X_LPARAM(lParam);
yPos = GET_Y_LPARAM(lParam);
Как отмечалось выше, координата x находится в низком порядке, чем возвращаемое значение; координата y находится в коротком формате высокого порядка (оба представляют подписанные значения, так как они могут принимать отрицательные значения в системах с несколькими мониторами). Если возвращаемое значение назначено переменной, можно использовать макрос MAKEPOINTS для получения структуры POINTS из возвращаемого значения. Вы также можете использовать макрос GET_X_LPARAM или GET_Y_LPARAM для извлечения координат x-или y.
Важно!
Не используйте макросы LOWORD или HIWORD для извлечения координат x-и y позиции курсора, так как эти макросы возвращают неверные результаты в системах с несколькими мониторами. Системы с несколькими мониторами могут иметь отрицательные координаты x и y, а LOWORD и HIWORD обрабатывают координаты как неподписанные количества.
Windows Vista: при создании пользовательских кадров, включающих стандартные кнопки подпись, сначала необходимо передать это сообщение в функцию DwmDefWindowProc. Это позволяет диспетчеру окон рабочего стола (DWM) предоставлять тестирование попаданий для кнопок подпись. Если DwmDefWindowProc не обрабатывает сообщение, может потребоваться дальнейшая обработка WM_NCHITTEST .
Requirements
Требование | Значение |
---|---|
Минимальная версия клиента |
Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера |
Windows 2000 Server [только классические приложения] |
Верхний колонтитул |
|
См. также
-
Ссылка
-
Концептуальной
-
Другие ресурсы