Сообщение WM_POINTERLEAVE
Отправляется в окно, когда указатель покидает диапазон обнаружения над окном (наведение указателя мыши) или когда указатель перемещается за пределы окна.
Окно получает это сообщение через функцию WindowProc .
Важно!
Классические приложения должны учитывать DPI. Если приложение не учитывает DPI, координаты экрана, содержащиеся в сообщениях указателя и связанных структурах, могут показаться неточными из-за виртуализации DPI. Виртуализация DPI обеспечивает поддержку автоматического масштабирования для приложений, которые не поддерживают DPI и активны по умолчанию (пользователи могут отключить его). Дополнительные сведения см. в статье Написание приложений Win32 с высоким разрешением.
#define WM_POINTERLEAVE 0x024A
Параметры
-
wParam
-
Содержит идентификатор указателя и дополнительные сведения. Используйте следующие макросы для получения этих сведений.
- GET_POINTERID_WPARAM(wParam): идентификатор указателя.
- IS_POINTER_INRANGE_WPARAM(wParam): указывает, было ли создано это сообщение указателем, который не покинул диапазон обнаружения. Этот флаг не устанавливается, когда указатель покидает диапазон обнаружения окна.
- IS_POINTER_INCONTACT_WPARAM(wParam): флаг, указывающий, было ли это сообщение создано указателем, который находится в контакте. Этот флаг не установлен для указателя в диапазоне обнаружения (наведение).
-
lParam
-
Содержит расположение точки указателя.
Примечание
Так как указатель может связываться с устройством через нетривиальную область, это расположение точки может быть упрощено для более сложной области указателя. По возможности приложение должно использовать полные сведения о области указателя вместо расположения точки.
Используйте следующие макросы для получения физических экранных координат точки.
- GET_X_LPARAM(lParam): координата x (горизонтальная точка).
- GET_Y_LPARAM(lParam): координата y (вертикальная точка).
Возвращаемое значение
Если приложение обрабатывает это сообщение, оно должно возвращать ноль.
Если приложение не обрабатывает это сообщение, оно должно вызвать DefWindowProc.
Комментарии
Уведомление WM_POINTERLEAVE может использоваться окном для изменения режима или остановки любой обратной связи с пользователем, когда указатель находится на поверхности окна.
Это уведомление отправляется только в окно, получающее входные данные для указателя. В следующей таблице перечислены некоторые ситуации, в которых отправляется это уведомление.
Действие | Установка флагов | Уведомления, отправленные |
---|---|---|
Указатель наведенного указателя пересекает границы окна. | IS_POINTER_INRANGE_WPARAM | Окно, за пределами границы которого перемещен указатель. |
Указатель выходит за пределы диапазона обнаружения. | Н/Д | Окно, для которого указатель покидает диапазон обнаружения. |
Важно!
Когда окно теряет захват указателя и получает уведомление WM_POINTERCAPTURECHANGED , оно обычно не получает никаких дополнительных уведомлений. По этой причине важно не делать никаких предположений на основе равномерно парных WM_POINTERDOWN/WM_POINTERUP или WM_POINTERENTER/WM_POINTERLEAVE уведомлений.
Если контакт поддерживается с дигитайзером входных данных и указатель перемещается за пределы окна, WM_POINTERLEAVE не создается. WM_POINTERLEAVE создается только в том случае, если указатель нависания пересекает границы окна или контакт завершается.
WM_POINTERLEAVE помещается в очередь отправленных сообщений, если входные данные поступили с устройства мыши.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента |
Windows 8 [только классические приложения] |
Минимальная версия сервера |
Windows Server 2012 [только классические приложения] |
Заголовок |
|
См. также раздел
-
Справочные материалы