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.
- GET_X_LPARAM(lParam): współrzędna x (punkt poziomy).
- GET_Y_LPARAM(lParam): współrzędna y (punkt pionowy).
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 |
|