Share via


POINTER_INFO-Struktur (winuser.h)

Enthält grundlegende Zeigerinformationen, die allen Zeigertypen gemeinsam sind. Anwendungen können diese Informationen mithilfe der Funktionen GetPointerInfo, GetPointerFrameInfo, GetPointerInfoHistory und GetPointerFrameInfoHistory abrufen.

Syntax

typedef struct tagPOINTER_INFO {
  POINTER_INPUT_TYPE         pointerType;
  UINT32                     pointerId;
  UINT32                     frameId;
  POINTER_FLAGS              pointerFlags;
  HANDLE                     sourceDevice;
  HWND                       hwndTarget;
  POINT                      ptPixelLocation;
  POINT                      ptHimetricLocation;
  POINT                      ptPixelLocationRaw;
  POINT                      ptHimetricLocationRaw;
  DWORD                      dwTime;
  UINT32                     historyCount;
  INT32                      InputData;
  DWORD                      dwKeyStates;
  UINT64                     PerformanceCount;
  POINTER_BUTTON_CHANGE_TYPE ButtonChangeType;
} POINTER_INFO;

Member

pointerType

Typ: POINTER_INPUT_TYPE

Ein Wert aus der POINTER_INPUT_TYPE-Enumeration , der den Zeigertyp angibt.

pointerId

Typ: UINT32

Ein Bezeichner, der einen Zeiger während seiner Lebensdauer eindeutig identifiziert. Ein Zeiger entsteht, wenn er zum ersten Mal erkannt wird, und beendet seine Existenz, wenn er außerhalb des Erkennungsbereichs liegt. Beachten Sie, dass eine physische Entität (Finger oder Stift) aus dem Erkennungsbereich ausfällt und dann wieder erkannt wird, als neuer Zeiger behandelt und möglicherweise einem neuen Zeigerbezeichner zugewiesen wird.

frameId

Typ: UINT32

Ein Bezeichner, der mehreren Zeigern gemeinsam ist, für die das Quellgerät ein Update in einem einzelnen Eingabeframe gemeldet hat. Beispielsweise kann ein Multitouch-Digitalisierer im parallelen Modus die Positionen mehrerer Touchkontakte in einem einzigen Update an das System melden.

Beachten Sie, dass der Framebezeichner als Eingabe für alle Zeiger auf allen Geräten an das System gemeldet wird. Daher enthält dieses Feld möglicherweise keine streng sequenziellen Werte in einer einzelnen Reihe von Nachrichten, die ein Fenster empfängt. Dieses Feld enthält jedoch den gleichen numerischen Wert für alle Eingabeupdates, die von einem einzelnen Gerät im gleichen Eingaberahmen gemeldet wurden.

pointerFlags

Typ: POINTER_FLAGS

Kann eine vernünftige Kombination von Flags aus den Zeigerflagskonstanten sein.

sourceDevice

Typ: HANDLE

Behandeln Sie das Quellgerät, das in Aufrufen der Roheingabegeräte-API und der Digitizergeräte-API verwendet werden kann.

hwndTarget

Typ: HWND

Fenster, auf das diese Nachricht ausgerichtet wurde. Wenn der Zeiger erfasst wird, entweder implizit aufgrund eines Kontakts über dieses Fenster oder explizit mithilfe der Zeigererfassungs-API, ist dies das Erfassungsfenster. Wenn der Zeiger nicht gekapselt ist, ist dies das Fenster, über das sich der Zeiger befand, als diese Nachricht generiert wurde.

ptPixelLocation

Typ: POINT

Die vorhergesagten Bildschirmkoordinaten des Zeigers in Pixeln.

Der vorhergesagte Wert basiert auf der vom Digitizer gemeldeten Zeigerposition und der Bewegung des Zeigers. Diese Korrektur kann visuelle Verzögerung aufgrund inhärenter Verzögerungen bei der Erfassung und Verarbeitung der Zeigerposition auf dem Digitizer kompensieren. Dies gilt für Zeiger vom Typ PT_TOUCH. Bei anderen Zeigertypen ist der vorhergesagte Wert mit dem nicht vorhergesagten Wert identisch (siehe ptPixelLocationRaw).

ptHimetricLocation

Typ: POINT

Die vorhergesagten Bildschirmkoordinaten des Zeigers in HIMETRIC-Einheiten.

Der vorhergesagte Wert basiert auf der vom Digitizer gemeldeten Zeigerposition und der Bewegung des Zeigers. Diese Korrektur kann visuelle Verzögerung aufgrund inhärenter Verzögerungen bei der Erfassung und Verarbeitung der Zeigerposition auf dem Digitizer kompensieren. Dies gilt für Zeiger vom Typ PT_TOUCH. Bei anderen Zeigertypen ist der vorhergesagte Wert mit dem nicht vorhergesagten Wert identisch (siehe ptHimetricLocationRaw).

ptPixelLocationRaw

Typ: POINT

Die Bildschirmkoordinaten des Zeigers in Pixeln. Angepasste Bildschirmkoordinaten finden Sie unter ptPixelLocation.

ptHimetricLocationRaw

Typ: POINT

Die Bildschirmkoordinaten des Zeigers in HIMETRIC-Einheiten. Angepasste Bildschirmkoordinaten finden Sie unter ptHimetricLocation.

dwTime

Art: DWORD

0 oder der Zeitstempel der Nachricht, basierend auf der Anzahl von System-Häkchen beim Empfang der Nachricht.

Die Anwendung kann den Eingabezeitstempel entweder in dwTime oder PerformanceCount angeben. Der Wert darf nicht aktueller als die aktuelle Tickanzahl oder der QueryPerformanceCount -Wert (QPC) des Einschleusungsthreads sein. Sobald ein Frame mit einem Zeitstempel eingefügt wurde, müssen alle nachfolgenden Frames einen Zeitstempel enthalten, bis alle Kontakte im Frame in den UP-Zustand wechseln. Der benutzerdefinierte Zeitstempelwert muss auch für das erste Element im Kontaktearray angegeben werden. Die Zeitstempelwerte nach dem ersten Element werden ignoriert. Der benutzerdefinierte Zeitstempelwert muss in jedem Einschleusungsrahmen inkrementiert werden.

Wenn PerformanceCount angegeben wird, wird der Zeitstempel bei der tatsächlichen Einschleusung in die aktuelle Zeit in einer Auflösung von 1 Millisekunden konvertiert. Wenn ein benutzerdefinierter PerformanceCount zu demselben 1 Millisekundenfenster aus der vorherigen Einschleusung geführt hat, wird ERROR_NOT_READY zurückgegeben, und die Einschleusung wird nicht durchgeführt. Während die Einschleusung nicht sofort durch den Fehler ungültig wird, muss die nächste erfolgreiche Einschleusung einen PerformanceCount-Wert aufweisen, der mindestens 0,1 Millisekunden von der zuvor erfolgreichen Injektion entspricht. Dies gilt auch, wenn dwTime verwendet wird.

Wenn sowohl dwTime als auch PerformanceCount in InjectTouchInput angegeben werden, wird ERROR_INVALID_PARAMETER zurückgegeben.

InjectTouchInput kann nicht zwischen dwTime und PerformanceCount wechseln, nachdem die Einschleusung gestartet wurde.

Wenn weder dwTime noch PerformanceCount angegeben sind, weist InjectTouchInput den Zeitstempel basierend auf dem Zeitpunkt des Aufrufs zu. Wenn InjectTouchInput-Aufrufe wiederholt kleiner als 0,1 Millisekunden sind, werden möglicherweise ERROR_NOT_READY zurückgegeben. Durch den Fehler wird die Eingabe nicht sofort ungültig, aber die Einschleusanwendung muss denselben Frame erneut wiederholen, damit die Einschleusung erfolgreich ist.

historyCount

Typ: UINT32

Anzahl der Eingaben, die in dieser Nachricht zusammengefasst wurden. Diese Anzahl entspricht der Gesamtzahl der Einträge, die von einem Aufruf von GetPointerInfoHistory zurückgegeben werden können. Wenn keine Koalescierung aufgetreten ist, ist diese Anzahl 1 für die einzelne Eingabe, die durch die Nachricht dargestellt wird.

InputData

dwKeyStates

Art: DWORD

Gibt an, welche Tastaturmodifizierertasten zum Zeitpunkt der Eingabegenerierung gedrückt wurden. Kann null oder eine Kombination der folgenden Werte aus Modifiziererschlüsselzustand sein.

POINTER_MOD_SHIFT – Eine UMSCHALTTASTE wurde gedrückt.

POINTER_MOD_CTRL – Eine STRG-TASTE wurde gedrückt.

Verwenden Sie GetKeyState.

PerformanceCount

Typ: UINT64

Der Wert des hochauflösenden Leistungsindikators beim Empfang der Zeigernachricht (hochgenaue 64-Bit-Alternative zu dwTime). Der Wert kann kalibriert werden, wenn die Hardware des Touch-Digitizers die Scanzeitstempelinformationen im Eingabebericht unterstützt.

ButtonChangeType

Typ: POINTER_BUTTON_CHANGE_TYPE

Ein Wert aus der POINTER_BUTTON_CHANGE_TYPE-Enumeration , der die Änderung des Schaltflächenzustands zwischen dieser Eingabe und der vorherigen Eingabe angibt.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2012 [nur Desktop-Apps]
Kopfzeile winuser.h (einschließlich Windows.h)

Siehe auch

Strukturen