Сообщение  WM_NCHITTEST


Всякий раз, когда происходит событие от нажатия кнопки мыши, система отправляет сообщение WM_NCHITTEST или в окно, которое содержит острие курсора, или в окно, которое захватило мышь. Система использует это сообщение, чтобы решить, какое отправлять сообщение мыши из рабочей  или  из нерабочей области. Приложение, которое должно получать сообщения о перемещении  и о кнопках мыши, должно передать сообщение WM_NCHITTEST в функцию DefWindowProc.

Параметр lParam сообщения WM_NCHITTEST содержит экранные координаты острия курсора. Функция DefWindowProc проверяет эти координаты и возвращает значение местоположения курсора, которое указывает место острия. Значение местоположения курсора может быть одним из ниже перечисленных значений.

Значение Местоположение острия курсора
HTBORDER В границах окна, которое не имеет рамки установки размеров окна.
HTBOTTOM На горизонтальной нижней рамке окна.
HTBOTTOMLEFT В левом нижнем угле рамки окна.
HTBOTTOMRIGHT В правом нижнем угле рамки окна.
HTCAPTION В области заголовка.
HTCLIENT В рабочей области.
HTCLOSE На кнопке Закрыть (Close).
HTERROR На экранном фоне или на разделительной линии между окнами (то же самое, что и HTNOWHERE, за исключением того, что функция DefWindowProc создает системный звуковой сигнал, чтобы обратиться внимание на ошибку).
HTGROWBOX На блоке управления размером (то же самое, что и HTSIZE).
HTHELP На кнопке Справка (Help).
HTHSCROLL На горизонтальной линейке прокрутки.
HTLEFT На левой рамке окна.
HTMENU В меню.
HTMAXBUTTON На кнопке развертывания окна (Maximize).
HTMINBUTTON На кнопке свертывания окна (Minimize).
HTNOWHERE На экранном фоне или на разделительной линии между окнами.
HTREDUCE На кнопке свертывания окна (Minimize).
HTRIGHT На правой рамке окна.
HTSIZE На блоке управления размером (то же самое, что и HTGROWBOX).
HTSYSMENU В Системном меню или на кнопке Закрыть (Close) в дочернем окне.
HTTOP На горизонтальной верхней рамке окна.
HTTOPLEFT На левом верхнем угле рамки окна.
HTTOPRIGHT На правом верхнем угле рамки окна.
HTTRANSPARENT В окне, в текущий момент закрытом другим окном  того же самого потока.
HTVSCROLL На вертикальной линейке прокрутки.
HTZOOM На кнопке развертывания окна (Maximize)..

Если курсор находится в рабочей области окна, DefWindowProc возвращает значение местоположения курсора HTCLIENT  оконной процедуре. Когда оконная процедура возвращает этот код системе, система преобразует экранные координаты острия курсора в рабочие координаты окна, а затем посылает соответствующее сообщение мыши из рабочей области.

Функция DefWindowProc возвращает друг за другом значения местоположения курсора, когда острие курсора находится в нерабочей области окна. Когда оконная процедура возвращает одно из этих значений местоположения курсора, система посылает сообщение мыши из нерабочей области, помещая значение местоположения курсора в параметре wParam сообщения, а координаты курсора в параметре lParam.

Назад в оглавление
На главную страницу

Hosted by uCoz