Freigeben über


GESTUREINFO-Struktur (winuser.h)

Speichert Informationen zu einer Geste.

Syntax

typedef struct tagGESTUREINFO {
  UINT      cbSize;
  DWORD     dwFlags;
  DWORD     dwID;
  HWND      hwndTarget;
  POINTS    ptsLocation;
  DWORD     dwInstanceID;
  DWORD     dwSequenceID;
  ULONGLONG ullArguments;
  UINT      cbExtraArgs;
} GESTUREINFO, *PGESTUREINFO;

Member

cbSize

Die Größe der Struktur in Bytes. Der Aufrufer muss dies auf sizeof(GESTUREINFO)festlegen.

dwFlags

Der Zustand der Geste. Weitere Informationen finden Sie unter Hinweise.

dwID

Der Bezeichner des Gestenbefehls.

hwndTarget

Ein Handle für das Fenster, auf das diese Geste abzielt.

ptsLocation

Eine POINTS-Struktur mit den Koordinaten, die der Geste zugeordnet sind. Diese Koordinaten sind immer relativ zum Ursprung des Bildschirms.

dwInstanceID

Ein intern verwendeter Bezeichner für die Struktur.

dwSequenceID

Ein intern verwendeter Bezeichner für die Sequenz.

ullArguments

Eine 64-Bit-Ganzzahl ohne Vorzeichen, die die Argumente für Gesten enthält, die in 8 Bytes passen.

cbExtraArgs

Die Größe der zusätzlichen Argumente, die diese Geste begleiten.

Hinweise

Das HIDWORD des ullArguments-Members ist immer 0, mit den folgenden Ausnahmen:

  • Für GID_PAN ist es 0, außer wenn dieS nicht zu einer Unträgheit kommt. Wenn GF_INERTIA festgelegt ist, ist DAS HIDWORD ein Inertia vector (zwei 16-Bit-Werte).
  • Für GID_PRESSANDTAP ist dies der Abstand zwischen den beiden Punkten.
Die GESTUREINFO-Struktur wird abgerufen, indem das Handle an die Gesteninformationsstruktur an die GetGestureInfo-Funktion übergeben wird.

Die folgenden Flags geben die verschiedenen Zustände der Gesten an und werden in dwFlags gespeichert.

Name Wert BESCHREIBUNG
GF_BEGIN 0x00000001 Eine Geste wird gestartet.
GF_INERTIA 0x00000002 Eine Geste hat DieTrägheit ausgelöst.
GF_END 0x00000004 Eine Geste ist abgeschlossen.
 
Hinweis Die meisten Anwendungen sollten die GID_BEGIN und GID_END Nachrichten ignorieren und an DefWindowProc übergeben. Diese Meldungen werden vom Standardgestenhandler verwendet. Das Anwendungsverhalten ist nicht definiert, wenn die GID_BEGIN - und GID_END-Nachrichten von einer Drittanbieteranwendung genutzt werden.
 
In der folgenden Tabelle sind die verschiedenen Bezeichner für Gesten angegeben.
Name Wert BESCHREIBUNG
GID_BEGIN 1 Eine Geste wird gestartet.
GID_END 2 Eine Geste endet.
GID_ZOOM 3 Die Zoomgeste.
GID_PAN 4 Die Schwenkbewegung.
GID_ROTATE 5 Die Drehbewegung.
GID_TWOFINGERTAP 6 Die Geste mit zwei Fingern.
GID_PRESSANDTAP 7 Die Geste zum Drücken und Tippen.
 
Hinweis Die GID_PAN Geste verfügt über integrierte Inertia. Am Ende einer Schwenkgeste werden vom Betriebssystem zusätzliche Schwenkgestenmeldungen erstellt.
 
Der folgende Typ ist definiert, um einen konstanten Zeiger auf eine GESTUREINFO-Struktur darzustellen.

    typedef GESTUREINFO const * PCGESTUREINFO;	 

Beispiele

  LRESULT DecodeGesture(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
    // Create a structure to populate and retrieve the extra message info.
    GESTUREINFO gi;  
    
    ZeroMemory(&gi, sizeof(GESTUREINFO));
    
    gi.cbSize = sizeof(GESTUREINFO);

    BOOL bResult  = GetGestureInfo((HGESTUREINFO)lParam, &gi);
    BOOL bHandled = FALSE;

    if (bResult){
        // now interpret the gesture
        switch (gi.dwID){
           case GID_ZOOM:
               // Code for zooming goes here     
               bHandled = TRUE;
               break;
           case GID_PAN:
               // Code for panning goes here
               bHandled = TRUE;
               break;
           case GID_ROTATE:
               // Code for rotation goes here
               bHandled = TRUE;
               break;
           case GID_TWOFINGERTAP:
               // Code for two-finger tap goes here
               bHandled = TRUE;
               break;
           case GID_PRESSANDTAP:
               // Code for roll over goes here
               bHandled = TRUE;
               break;
           default:
               // A gesture was not recognized
               break;
        }
    }else{
        DWORD dwErr = GetLastError();
        if (dwErr > 0){
            //MessageBoxW(hWnd, L"Error!", L"Could not retrieve a GESTUREINFO structure.", MB_OK);
        }
    }
    if (bHandled){
        return 0;
    }else{
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
  }

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 7 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 R2 [nur Desktop-Apps]
Kopfzeile winuser.h (einschließlich Windows.h)

Weitere Informationen

GetGestureInfo

Strukturen

WM_GESTURE