TOUCHINPUT-Struktur (winuser.h)
Kapselt Daten für Toucheingaben.
Syntax
typedef struct tagTOUCHINPUT {
LONG x;
LONG y;
HANDLE hSource;
DWORD dwID;
DWORD dwFlags;
DWORD dwMask;
DWORD dwTime;
ULONG_PTR dwExtraInfo;
DWORD cxContact;
DWORD cyContact;
} TOUCHINPUT, *PTOUCHINPUT;
Member
x
Die x-Koordinate (horizontaler Punkt) der Toucheingabe. Dieses Element wird in hundertstel Pixeln physischer Bildschirmkoordinaten angegeben.
y
Die y-Koordinate (vertikaler Punkt) der Toucheingabe. Dieses Element wird in hundertstel Pixeln physischer Bildschirmkoordinaten angegeben.
hSource
Ein Gerätehandle für das Quelleingabegerät. Jedes Gerät erhält zur Laufzeit vom Toucheingabeanbieter einen eindeutigen Anbieter. Weitere Informationen finden Sie weiter unten im Abschnitt Beispiele .
dwID
Ein Touchpunktbezeichner, der eine bestimmte Toucheingabe unterscheidet. Dieser Wert bleibt in einer Berührungskontaktsequenz von dem Punkt, an dem ein Kontakt abfällt, konsistent, bis er wieder hochkommt. Eine ID kann später für nachfolgende Kontakte wiederverwendet werden.
dwFlags
Eine Reihe von Bitflags, die verschiedene Aspekte des Drückens, Freigebens und Bewegens des Touchpunkts angeben. Die Bits in diesem Member können eine beliebige vernünftige Kombination der Werte im Abschnitt Hinweise sein.
dwMask
Eine Reihe von Bitflags, die angeben, welche der optionalen Felder in der Struktur gültige Werte enthalten. Die Verfügbarkeit gültiger Informationen in den optionalen Feldern ist gerätespezifisch. Anwendungen sollten einen optionalen Feldwert nur verwenden, wenn das entsprechende Bit in dwMask festgelegt ist. Dieses Feld kann eine Kombination der dwMask-Flags enthalten, die im Abschnitt Hinweise erwähnt werden.
dwTime
Der Zeitstempel für das Ereignis in Millisekunden. Die verbrauchende Anwendung sollte beachten, dass das System keine Überprüfung für dieses Feld durchführt. wenn das TOUCHINPUTMASKF_TIMEFROMSYSTEM-Flag nicht festgelegt ist, hängen die Genauigkeit und Sequenzierung der Werte in diesem Feld vollständig vom Toucheingabeanbieter ab.
dwExtraInfo
Ein zusätzlicher Wert, der dem Touchereignis zugeordnet ist.
cxContact
Die Breite des Berührungskontaktbereichs in Hundertstel eines Pixels in physischen Bildschirmkoordinaten. Dieser Wert ist nur gültig, wenn für das dwMask-Element das TOUCHEVENTFMASK_CONTACTAREA-Flag festgelegt ist.
cyContact
Die Höhe des Berührungskontaktbereichs in Hundertstel eines Pixels in physischen Bildschirmkoordinaten. Dieser Wert ist nur gültig, wenn für das dwMask-Element das TOUCHEVENTFMASK_CONTACTAREA-Flag festgelegt ist.
Hinweise
In der folgenden Tabelle sind die Flags für das dwFlags-Element aufgeführt.
Flag | Wert | BESCHREIBUNG |
---|---|---|
TOUCHEVENTF_MOVE | 0x0001 | Es ist eine Bewegung aufgetreten. Kann nicht mit TOUCHEVENTF_DOWN kombiniert werden. |
TOUCHEVENTF_DOWN | 0x0002 | Der entsprechende Touchpoint wurde durch einen neuen Kontakt eingerichtet. Kann nicht mit TOUCHEVENTF_MOVE oder TOUCHEVENTF_UP kombiniert werden. |
TOUCHEVENTF_UP | 0x0004 | Ein Touchpunkt wurde entfernt. |
TOUCHEVENTF_INRANGE | 0x0008 | Ein Touchpunkt befindet sich im Bereich. Dieses Flag wird verwendet, um die Touch-Hover-Unterstützung auf kompatibler Hardware zu aktivieren. Anwendungen, die keine Unterstützung für das Zeigen wünschen, können dieses Flag ignorieren. |
TOUCHEVENTF_PRIMARY | 0x0010 | Gibt an, dass diese TOUCHINPUT-Struktur einem primären Kontaktpunkt entspricht. Weitere Informationen zu primären Touchpunkten finden Sie im folgenden Text. |
TOUCHEVENTF_NOCOALESCE | 0x0020 | Wenn diese Eingabe mit GetTouchInputInfo empfangen wurde, wurde diese Eingabe nicht vereint. |
TOUCHEVENTF_PEN | 0x0040 | Das Touchereignis wurde von einem Eingabestiftgerät ausgelöst. |
TOUCHEVENTF_PALM | 0x0080 | Das Touchereignis wurde von der Handfläche des Benutzers ausgelöst. |
Flag | Wert | BESCHREIBUNG |
---|---|---|
TOUCHINPUTMASKF_CONTACTAREA | 0x0004 | cxContact und cyContact sind gültig. Weitere Informationen zu primären Touchpunkten finden Sie im folgenden Text. |
TOUCHINPUTMASKF_EXTRAINFO | 0x0002 | dwExtraInfo ist gültig. |
TOUCHINPUTMASKF_TIMEFROMSYSTEM | 0x0001 | Die Systemzeit wurde in der TOUCHINPUT-Struktur festgelegt. |
Ein Touchpunkt wird als primär bezeichnet, wenn er der erste Touchpunkt ist, der aus einem vorherigen Zustand ohne Berührungspunkte eingerichtet werden soll. Das TOUCHEVENTF_PRIMARY-Flag wird weiterhin für alle nachfolgenden Ereignisse für den primären Touchpunkt festgelegt, bis der primäre Touchpunkt freigegeben wird. Beachten Sie, dass ein TOUCHEVENTF_UP-Ereignis auf dem primären Touchpunkt nicht unbedingt das Ende eines Windows Touch-Vorgangs angibt. Der aktuelle Windows Touch-Vorgang geht von der Einrichtung des primären Touchpunkts aus, bis der letzte Touchpunkt freigegeben wird.
Beachten Sie, dass ein solitärer Berührungspunkt oder in einer Reihe gleichzeitiger Touchpunkte der erste, der erkannt werden soll, der primäre ist. Die Mausposition des Systems folgt dem primären Touchpunkt und generiert neben Touchnachrichten auch WM_LBUTTONDOWN, WM_MOUSEMOVE und WM_LBUTTONUP Nachrichten als Reaktion auf Aktionen an einem primären Touchpunkt. Der primäre Touchpunkt kann auch WM_RBUTTONDOWN - und WM_RBUTTONUP Nachrichten mithilfe der Geste zum Drücken und Halten generieren.
Beachten Sie, dass der Touchpunktbezeichner dynamisch sein kann und nur so lange einem bestimmten Touchpunkt zugeordnet ist, wie der Touchpunkt beibehalten wird. Wenn der Kontakt unterbrochen und dann fortgesetzt wird (z. B. wenn ein Finger von der Oberfläche entfernt und dann wieder nach unten gedrückt wird), erhält derselbe Berührungspunkt (derselbe Finger, derselbe Stift oder ein anderes Gerät) möglicherweise einen anderen Touchpunktbezeichner.
Der folgende Typ wird definiert, um einen konstanten Zeiger auf eine TOUCHINPUT-Struktur darzustellen.
typedef TOUCHINPUT const * PCTOUCHINPUT;
Beispiele
UINT cInputs = LOWORD(wParam);
PTOUCHINPUT pInputs = new TOUCHINPUT[cInputs];
if (NULL != pInputs)
{
if (GetTouchInputInfo((HTOUCHINPUT)lParam,
cInputs,
pInputs,
sizeof(TOUCHINPUT)))
{
// process pInputs
if (!CloseTouchInputHandle((HTOUCHINPUT)lParam))
{
// error handling
}
}
else
{
// GetLastError() and error handling
}
delete [] pInputs;
}
else
{
// error handling, presumably out of memory
}
return DefWindowProc(hWnd, message, wParam, lParam);
Das folgende Beispiel zeigt, wie Sie die Geräteinformationen vom hSource-Member abrufen. In diesem Beispiel wird GetRawInputDevice verwendet, um Informationen zum Gerät abzurufen.
for (UINT i = 0; i < cInputs; i++){
TOUCHINPUT ti = pInputs[i];
RID_DEVICE_INFO info;
ZeroMemory(&info, sizeof(RID_DEVICE_INFO));
info.cbSize = sizeof(RID_DEVICE_INFO);
UINT size = 0;
if (GetRawInputDeviceInfo(ti.hSource, RIDI_DEVICEINFO, &info, &size)){
}else{
DWORD err = GetLastError();
}
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 7 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 R2 [nur Desktop-Apps] |
Kopfzeile | winuser.h (windows.h einschließen) |