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.
 
Hinweis Wenn die Zielhardware auf einem Computer den Mauszeiger nicht unterstützt, wird beim Festlegen des TOUCHEVENTF_UP-Flags das flag TOUCHEVENTF_INRANGE deaktiviert. Wenn die Zielhardware auf einem Computer das Zeigen unterstützt, werden die flags TOUCHEVENTF_UP und TOUCHEVENTF_INRANGE unabhängig festgelegt.
 
In der folgenden Tabelle sind die Flags für das dwMask-Element aufgeführt.
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

Hinweis Im folgenden Beispiel wird das pInputs-Array nicht sortiert. Verwenden Sie den dwID-Wert , um bestimmte Touchpunkte nachzuverfolgen.
 
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)

Weitere Informationen

GetTouchInputInfo

Strukturen