Udostępnij za pośrednictwem


komunikat WM_POINTERLEAVE

Wysłane do okna, gdy wskaźnik opuszcza zakres wykrywania nad oknem (zatrzymaj wskaźnik) lub gdy wskaźnik przechodzi poza granice okna.

Okno odbiera ten komunikat za pośrednictwem funkcji WindowProc.

! [Ważne]
Aplikacje klasyczne powinny mieć świadomość DPI. Jeśli aplikacja nie rozpozna dpi, współrzędne ekranu zawarte w komunikatach wskaźnika i powiązanych strukturach mogą wydawać się niedokładne z powodu wirtualizacji DPI. Wirtualizacja DPI zapewnia automatyczną obsługę skalowania dla aplikacji, które nie obsługują dpi i są domyślnie aktywne (użytkownicy mogą ją wyłączyć). Aby uzyskać więcej informacji, zobacz Pisanie aplikacji win32 High-DPI.

#define WM_POINTERLEAVE                 0x024A

Parametry

wParam

Zawiera identyfikator wskaźnika i dodatkowe informacje. Użyj poniższych makr, aby pobrać te informacje.

  • GET_POINTERID_WPARAM(wParam): identyfikator wskaźnika.
  • IS_POINTER_INRANGE_WPARAM(wParam): wskazuje, czy ten komunikat został wygenerowany przez wskaźnik, który nie pozostawił zakresu wykrywania. Ta flaga nie jest ustawiana, gdy wskaźnik opuszcza zakres wykrywania okna.
  • IS_POINTER_INCONTACT_WPARAM(wParam): flaga wskazująca, czy ten komunikat został wygenerowany przez wskaźnik, który znajduje się w kontakcie. Ta flaga nie jest ustawiona dla wskaźnika w zakresie wykrywania (zatrzymaj wskaźnik).

lParam

Zawiera lokalizację punktu wskaźnika.

Nuta

Ponieważ wskaźnik może nawiązać kontakt z urządzeniem w obszarze innym niż trywialny, lokalizacja punktu może być uproszczeniem bardziej złożonego obszaru wskaźnika. Jeśli to możliwe, aplikacja powinna używać pełnych informacji o obszarze wskaźnika zamiast lokalizacji punktu.

Użyj poniższych makr, aby pobrać współrzędne ekranu fizycznego punktu.

Wartość zwracana

Jeśli aplikacja przetwarza ten komunikat, powinna zwrócić zero.

Jeśli aplikacja nie przetworzy tego komunikatu, powinna wywołać DefWindowProc.

Uwagi

Powiadomienie WM_POINTERLEAVE może być używane przez okno, aby zmienić tryb lub zatrzymać wszelkie opinie użytkownika, gdy wskaźnik znajduje się na powierzchni okna.

To powiadomienie jest wysyłane tylko do okna odbierającego dane wejściowe wskaźnika. W poniższej tabeli wymieniono niektóre sytuacje, w których to powiadomienie jest wysyłane.

Akcja Zestaw flag Powiadomienia wysłane do
Wskaźnik myszy przekracza granice okna. IS_POINTER_INRANGE_WPARAM Okno poza granicą, w którym wskaźnik został przeniesiony.
Wskaźnik wykracza poza zakres wykrywania. N/A Okno, dla którego wskaźnik opuszcza zakres wykrywania.

! [Ważne]
Gdy okno utraci przechwycenie wskaźnika i otrzyma powiadomienie o WM_POINTERCAPTURECHANGED, zwykle nie będzie otrzymywać żadnych dalszych powiadomień. Z tego powodu ważne jest, aby nie wprowadzać żadnych założeń w oparciu o parowane równomiernie WM_POINTERDOWN/WM_POINTERUP lub powiadomienia WM_POINTERENTER/WM_POINTERLEAVE.

Jeśli kontakt jest utrzymywany przy użyciu cyfry wejściowej, a wskaźnik porusza się poza oknem, WM_POINTERLEAVE nie jest generowany. WM_POINTERLEAVE jest generowany tylko wtedy, gdy zatrzymanie wskaźnika myszy przekracza granice okna lub kontaktu.

WM_POINTERLEAVE jest publikowany w kolejce komunikatów opublikowanych, jeśli dane wejściowe pochodzą z urządzenia myszy.

Wymagania

Wymaganie Wartość
Minimalny obsługiwany klient
Windows 8 [tylko aplikacje klasyczne]
Minimalny obsługiwany serwer
Windows Server 2012 [tylko aplikacje klasyczne]
Nagłówek
Winuser.h (uwzględnij windows.h)

Zobacz też

wiadomości

referencyjne

GET_POINTERID_WPARAM

IS_POINTER_INRANGE_WPARAM

IS_POINTER_INCONTACT_WPARAM