Поделиться через


Сообщение WM_POINTERENTER

Отправляется в окно, когда новый указатель входит в диапазон обнаружения в окне (наведение указателя мыши) или когда существующий указатель перемещается в пределах окна.

Окно получает это сообщение через функцию WindowProc .

Важно!
Классические приложения должны учитывать DPI. Если приложение не учитывает DPI, координаты экрана, содержащиеся в сообщениях указателя и связанных структурах, могут показаться неточными из-за виртуализации DPI. Виртуализация DPI обеспечивает поддержку автоматического масштабирования для приложений, которые не поддерживают DPI и активны по умолчанию (пользователи могут отключить его). Дополнительные сведения см. в статье Написание приложений Win32 с высоким разрешением.

#define WM_POINTERENTER                 0x0249

Параметры

wParam

Содержит идентификатор указателя и дополнительные сведения. Используйте следующие макросы для получения определенных сведений в параметре wParam.

  • GET_POINTERID_WPARAM(wParam): идентификатор указателя.
  • IS_POINTER_NEW_WPARAM(wParam): указывает, является ли это сообщение первым сообщением, созданным новым указателем, входящего в диапазон обнаружения (при наведении указателя мыши).
  • IS_POINTER_INRANGE_WPARAM(wParam): указывает, было ли создано это сообщение указателем, который не покинул диапазон обнаружения. Этот флаг всегда устанавливается для WM_POINTERENTER сообщений.
  • IS_POINTER_INCONTACT_WPARAM(wParam): флаг, указывающий, было ли это сообщение создано указателем, который находится в контакте. Этот флаг не установлен для указателя в диапазоне обнаружения (наведение).

lParam

Содержит расположение точки указателя.

Примечание

Так как указатель может связываться с устройством через нетривиальную область, это расположение точки может быть упрощено для более сложной области указателя. По возможности приложение должно использовать полные сведения о области указателя вместо расположения точки.

Используйте следующие макросы для получения физических экранных координат точки.

  • GET_X_LPARAM(lParam): координата x (горизонтальная точка).
  • GET_Y_LPARAM(lParam): координата y (вертикальная точка).

Возвращаемое значение

Если приложение обрабатывает это сообщение, оно должно возвращать ноль.

Если приложение не обрабатывает это сообщение, оно должно вызвать DefWindowProc.

Комментарии

Уведомление WM_POINTERENTER может использоваться окном для отправки отзывов пользователю, когда указатель находится над его поверхностью, или для реагирования на наличие указателя на его поверхности.

Это уведомление отправляется только в окно, получающее входные данные для указателя. В следующей таблице перечислены некоторые ситуации, в которых отправляется это уведомление.

Действие Установка флагов Уведомления, отправленные
Новый указатель входит в диапазон обнаружения (наведение указателя мыши). IS_POINTER_NEW_WPARAM
IS_POINTER_INRANGE_WPARAM
Окно, на которое указатель входит в диапазон обнаружения.
Указатель нависания пересекает границы окна. IS_POINTER_INRANGE_WPARAM
Окно, в котором пересек указатель.

Важно!
Когда окно теряет захват указателя и получает уведомление WM_POINTERCAPTURECHANGED , оно обычно не получает никаких дополнительных уведомлений. По этой причине важно не делать никаких предположений на основе равномерно парных WM_POINTERDOWN/WM_POINTERUP или WM_POINTERENTER/уведомлений WM_POINTERLEAVE .

Когда входные данные поступают с мыши, в результате интеграции сообщений мыши и указателя WM_POINTERENTER не отправляются.

Требования

Требование Значение
Минимальная версия клиента
Windows 8 [только классические приложения]
Минимальная версия сервера
Windows Server 2012 [только классические приложения]
Заголовок
Winuser.h (включая Windows.h)

См. также раздел

Сообщения

Справочные материалы

GET_POINTERID_WPARAM

IS_POINTER_NEW_WPARAM

IS_POINTER_INRANGE_WPARAM

IS_POINTER_INCONTACT_WPARAM