GetPointerTouchpadInfo-Funktionen

[Einige Informationen beziehen sich auf vorab veröffentlichte Produkte, die vor der kommerziellen Veröffentlichung erheblich geändert werden können. Microsoft übernimmt keine Gewährleistungen, ausdrücklichen oder konkludenten Angaben in Bezug auf die hier bereitgestellten Informationen.]

Ruft Touchpad-spezifische Zeigerinformationen ab. Es stehen vier Varianten zur Verfügung, je nachdem, ob Sie einen einzelnen Zeiger oder einen ganzen Frame benötigen und ob Sie den aktuellen Zustand oder den vollständigen Verlauf benötigen.

Syntax

WINUSERAPI
BOOL
WINAPI
GetPointerTouchpadInfo(
    _In_ UINT32 pointerId,
    _Out_writes_(1) POINTER_TOUCH_INFO *touchpadInfo);

WINUSERAPI
BOOL
WINAPI
GetPointerTouchpadInfoHistory(
    _In_ UINT32 pointerId,
    _Inout_ UINT32 *entriesCount,
    _Out_writes_opt_(*entriesCount) POINTER_TOUCH_INFO *touchpadInfo);

WINUSERAPI
BOOL
WINAPI
GetPointerFrameTouchpadInfo(
    _In_ UINT32 pointerId,
    _Inout_ UINT32 *pointerCount,
    _Out_writes_opt_(*pointerCount) POINTER_TOUCH_INFO *touchpadInfo);

WINUSERAPI
BOOL
WINAPI
GetPointerFrameTouchpadInfoHistory(
    _In_ UINT32 pointerId,
    _Inout_ UINT32 *entriesCount,
    _Inout_ UINT32 *pointerCount,
    _Out_writes_opt_(*entriesCount * *pointerCount) POINTER_TOUCH_INFO *touchpadInfo);

Parameter

pointerId

Der Bezeichner des Zeigers, für den Informationen abgerufen werden sollen.

entriesCount (Verlaufsvarianten)

Ein Zeiger auf einen Wert, der die Anzahl der Einträge im Puffer angibt. Gibt bei Eingaben die Größe des Puffers an. Bei der Ausgabe erhält die Anzahl der geschriebenen Einträge.

pointerCount (Frame-Varianten)

Ein Zeiger auf einen Wert, der die Anzahl der Zeiger im Frame angibt. Gibt bei Eingaben die Größe des Puffers an. Bei der Ausgabe erhält die Anzahl der geschriebenen Zeiger.

TouchpadInfo

Ein Zeiger auf eine POINTER_TOUCH_INFO Struktur, die die Touchpadinformationen empfängt. Kann NULL sein, um die erforderlichen Puffergrößen abzufragen.

Zurückgegebener Wert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen abzurufen.

Bemerkungen

Ruft die angeforderte Touchpadzeigereingabe ab, die der angegebenen Zeiger-ID zugeordnet ist. Der "Frame" enthält alle derzeit aktiven Kontakte, die an dasselbe Ziel übermittelt werden wie die Eingabe, die der Zeiger-ID zugeordnet ist. Der "Verlauf" enthält alle Eingaben, die mit der aktuellen Eingabe zusammengeklammert wurden, da das Ziel die frühere Eingabe nicht umgehend entqueuiert.

Die Zeigereingabe wird in einer POINTER_TOUCH_INFO Struktur zurückgegeben, genau wie die Touchäquivalente dieser APIs, da die erweiterten Zeigerfelder für die Touch- und Touchpadeingabe identisch sind.

Diese Funktionen sollten nur aufgerufen werden, wenn WM_POINTER Nachrichten für die Touchpadeingabe verarbeitet werden (nach der Registrierung als Touchpad-fähig über RegisterTouchpadCapableWindow oder RegisterTouchpadCapableThread).

Die Zeigereingabe für Touchpads weist einige funktionale Unterschiede im Vergleich zu anderen Zeigergerätetypen auf:

  • Die Felder ptPixelLocation und ptPixelLocationRaw sind identisch und enthalten die Position des Mauszeigers zum Zeitpunkt des Beginns der Geste und ändern sich nicht über die Dauer der Geste.
  • Die Felder ptHimetricLocation und ptHimetricLocationRaw sind identisch und enthalten die Position des Kontakts relativ zum Gerät.
  • GetPointerDeviceRects gibt den virtuellen Desktop für das Bildschirmrechteck und die Abmessungen des Touchpads für das Geräterechteck zurück. Während sich die oben genannten Positionen innerhalb der Grenzen dieser Rects befinden, gibt es keine Beziehung zwischen den beiden. Bei anderen Zeigergerätetypen befinden sich die jeweiligen Positionen an derselben relativen Position innerhalb ihrer entsprechenden Rechtecke, dies ist jedoch nicht der Fall für die Touchpadeingabe.
  • Beim anfänglichen Empfangen eines Eingabedatenstroms kann es für jeden Kontakt zwischen dem ersten und dem zweiten Eingabeframe einen erheblichen räumlichen und zeitlichen Abstand geben. Während das System weiterhin mehrdeutig auf der Touchpadeingabe auftritt, werden die Eingabeframes verworfen. Wenn das System feststellt, dass eine Geste auftritt, synthetisiert es einen früheren Frame für die POINTER_FLAG_DOWN Eingabe des Kontakts und liefert sie zuerst, sodass das Eingabeziel die Informationen verwenden kann, wenn ermittelt wird, ob die Eingabe die Schwellenwerte für die Gestikerkennung erreicht hat. Wenn die Eingabe für die Inhaltsbearbeitung verwendet wird, sollten Sie darauf achten, das "Springen" des Inhalts am Anfang zu vermeiden. Dies kann passieren, wenn die räumliche Bewegung des Kontakts direkt als Inhaltsmanipulation angewendet wird, während die Eingabe eingeht.
  • Wenn die Zeigereingabe an die Interaktionskontext-APIs für die Gestenerkennung gespeist wird:
    • ProcessPointerFramesInteractionContext2 und BufferPointerPacketsInteractionContext2 müssen verwendet werden, wenn Eingaben in den Interaktionskontext eingefügt werden.
    • Es können nur Manipulationsgesten ausgegeben werden (Tipp- und Haltebereiche können nicht erkannt werden, da das System nur Touchpad-WM_POINTER Eingabe generiert, sobald diese Gesten nicht mehr auftreten können).
    • Wenn der Interaktionskontext so konfiguriert ist, dass die Ausgabe in Bildschirmkoordinaten zurückgegeben wird, wird die Ausgabe durch den Skalierungsfaktor der Anzeige skaliert, die den Mauszeiger enthält, sodass die gleiche Geste auf dem Touchpad unabhängig von der Anzeigeskala dieselbe effektive Gestenausgabe bewirkt.
    • Wenn sie für die himetrische Ausgabe konfiguriert ist, erzeugt dieselbe Geste unabhängig von der Anzeige des Mauszeigers dieselben Ergebnisse. Die Ausgabe wird basierend auf der Geschwindigkeit der Eingabe skaliert, sodass schnellere Fingerbewegung für den gleichen physischen Fingerabstand zu größeren Ausgabestärken führt.
    • Die Ausgabe vermeidet das "Springen" wie oben beschrieben und kann direkt auf Inhalte zur Manipulation angewendet werden.

Anforderungen

Anforderung Wert
Mindestens unterstützter Client Windows 11 [nur Desktop-Apps]
Unterstützter Server (Mindestversion) Nicht unterstützt
Header Winuser.h (einschließen Windows.h)
Bibliothek User32.lib
DLL User32.dll (Ordinal 2691 for GetPointerTouchpadInfo, ordinal 2692 for GetPointerTouchpadInfoHistory, ordinal 2693 for GetPointerFrameTouchpadInfo, ordinal 2694 for GetPointerFrameTouchpadInfoHistory)

Siehe auch