WM_POINTERLEAVE-Nachricht
Wird an ein Fenster gesendet, wenn ein Zeiger den Erkennungsbereich über dem Fenster verlässt (mit dem Zeigen darauf), oder wenn ein Zeiger außerhalb der Fenstergrenzen bewegt wird.
Ein Fenster empfängt diese Nachricht über seine WindowProc-Funktion.
[! Wichtig]
Desktop-Apps sollten DPI-bewusst sein. Wenn Ihre App keine DPI-Unterstützung hat, können Bildschirmkoordinaten, die in Zeigermeldungen und verwandten Strukturen enthalten sind, aufgrund der DPI-Virtualisierung ungenau erscheinen. Die DPI-Virtualisierung bietet Unterstützung für die automatische Skalierung für Anwendungen, die nicht DPI-bewusst sind und standardmäßig aktiv sind (Benutzer können sie deaktivieren). Weitere Informationen finden Sie unter Writing High-DPI Win32 Applications ( Schreiben von Win32-Anwendungen mit hohem DPI-Code).
#define WM_POINTERLEAVE 0x024A
Parameter
-
wParam
-
Enthält den Zeigerbezeichner und zusätzliche Informationen. Verwenden Sie die folgenden Makros, um diese Informationen abzurufen.
- GET_POINTERID_WPARAM(wParam): Der Zeigerbezeichner.
- IS_POINTER_INRANGE_WPARAM(wParam): Gibt an, ob diese Meldung von einem Zeiger generiert wurde, der den Erkennungsbereich nicht verlassen hat. Dieses Flag wird nicht festgelegt, wenn der Zeiger den Erkennungsbereich des Fensters verlässt.
- IS_POINTER_INCONTACT_WPARAM(wParam): Ein Flag, das angibt, ob diese Nachricht von einem Zeiger generiert wurde, der sich in Kontakt befindet. Dieses Flag ist für einen Zeiger im Erkennungsbereich (Hover) nicht festgelegt.
-
lParam
-
Enthält die Punktposition des Zeigers.
Hinweis
Da der Zeiger den Kontakt mit dem Gerät über einen nicht trivialen Bereich stellen kann, kann diese Punktposition eine Vereinfachung eines komplexeren Zeigerbereichs sein. Wenn möglich, sollte eine Anwendung die vollständigen Zeigerbereichsinformationen anstelle der Punktposition verwenden.
Verwenden Sie die folgenden Makros, um die physischen Bildschirmkoordinaten des Punkts abzurufen.
- GET_X_LPARAM(lParam): Die x-Koordinate (horizontaler Punkt).
- GET_Y_LPARAM(lParam): Die y-Koordinate (vertikaler Punkt).
Rückgabewert
Wenn eine Anwendung diese Nachricht verarbeitet, sollte sie 0 (null) zurückgeben.
Wenn die Anwendung diese Meldung nicht verarbeiten kann, sollte sie DefWindowProc aufrufen.
Bemerkungen
Die WM_POINTERLEAVE kann von einem Fenster verwendet werden, um den Modus zu ändern oder Feedback an den Benutzer zu beenden, während sich der Zeiger über der Fensteroberfläche befindet.
Diese Benachrichtigung wird nur an das Fenster gesendet, das Eingaben für den Zeiger empfängt. In der folgenden Tabelle sind einige Situationen aufgeführt, in denen diese Benachrichtigung gesendet wird.
| Aktion | Flags festgelegt | An gesendete Benachrichtigungen |
|---|---|---|
| Ein zeigende Zeiger überschreitet Fenstergrenzen. | IS_POINTER_INRANGE_WPARAM | Fenster außerhalb der Begrenzung, dessen Begrenzung der Zeiger verschoben hat. |
| Ein Zeiger geht aus dem Erkennungsbereich heraus. | NICHT ZUTREFFEND | Fenster, für das der Zeiger den Erkennungsbereich verlässt. |
[! Wichtig]
Wenn ein Fenster die Erfassung eines Zeigers verliert und die WM_POINTERCAPTURECHANGED empfängt, empfängt es in der Regel keine weiteren Benachrichtigungen. Aus diesem Grund ist es wichtig, dass Sie keine Annahmen treffen, die auf gleichmäßig gekoppelten WM_POINTERDOWN / WM_POINTERUP- oder WM_POINTERENTER / WM_POINTERLEAVE basieren.
Wenn der Kontakt mit dem Eingabed digitizer beibehalten wird und der Zeiger außerhalb des Fensters bewegt wird, WM_POINTERLEAVE nicht generiert. WM_POINTERLEAVE wird nur generiert, wenn ein zeigende Zeiger Fenstergrenzen überschreitet oder der Kontakt beendet wird.
WM_POINTERLEAVE wird an die Warteschlange für gesendete Nachrichten gesendet, wenn die Eingabe von einem Mausgerät stammt.
Requirements (Anforderungen)
| Anforderung | Wert |
|---|---|
| Unterstützte Mindestversion (Client) |
[Windows 8 Nur Desktop-Apps] |
| Unterstützte Mindestversion (Server) |
[Windows Server 2012 Nur Desktop-Apps] |
| Header |
|