Struttura GESTUREINFO (winuser.h)

Archivia informazioni su un movimento.

Sintassi

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

Members

cbSize

Dimensioni della struttura, in byte. Il chiamante deve impostare questo valore su sizeof(GESTUREINFO).

dwFlags

Stato del movimento. Per altre informazioni, vedere Osservazioni.

dwID

Identificatore del comando di movimento.

hwndTarget

Handle per la finestra destinata a questo movimento.

ptsLocation

Struttura POINTS contenente le coordinate associate al movimento. Queste coordinate sono sempre relative all'origine dello schermo.

dwInstanceID

Identificatore usato internamente per la struttura.

dwSequenceID

Identificatore usato internamente per la sequenza.

ullArguments

Intero senza segno a 64 bit che contiene gli argomenti per i movimenti che si adattano a 8 byte.

cbExtraArgs

Dimensioni, in byte, di argomenti aggiuntivi che accompagnano questo gesto.

Commenti

L'HIDWORD del membro ullArguments è sempre 0, con le eccezioni seguenti:

  • Per GID_PAN, è 0 tranne quando c'è inertia. Quando GF_INERTIA è impostato, HIDWORD è un vettore inertia (due valori a 16 bit).
  • Per GID_PRESSANDTAP, è la distanza tra i due punti.
La struttura GESTUREINFO viene recuperata passando l'handle alla struttura delle informazioni sui movimenti alla funzione GetGestureInfo .

I flag seguenti indicano i vari stati dei movimenti e vengono archiviati in dwFlags.

Nome Valore Descrizione
GF_BEGIN 0x00000001 Viene avviato un gesto.
GF_INERTIA 0x00000002 Un gesto ha attivato l'inerzia.
GF_END 0x00000004 Un gesto è finito.
 
Nota La maggior parte delle applicazioni deve ignorare i messaggi GID_BEGIN e GID_END e passarli a DefWindowProc. Questi messaggi vengono usati dal gestore dei movimenti predefinito. Il comportamento dell'applicazione non è definito quando i messaggi di GID_BEGIN e GID_END vengono usati da un'applicazione di terze parti.
 
La tabella seguente indica i vari identificatori per i movimenti.
Nome Valore Descrizione
GID_BEGIN 1 Viene avviato un gesto.
GID_END 2 Un gesto termina.
GID_ZOOM 3 Movimento di zoom.
GID_PAN 4 Movimento di panoramica.
GID_ROTATE 5 Movimento di rotazione.
GID_TWOFINGERTAP 6 Movimento di tocco a due dita.
GID_PRESSANDTAP 7 Movimento di pressione e tocco.
 
Nota Il movimento GID_PAN ha un'inerzia predefinita. Alla fine di un movimento di panoramica, vengono creati altri messaggi di panoramica dal sistema operativo.
 
Il tipo seguente viene definito per rappresentare un puntatore costante a una struttura GESTUREINFO .

    typedef GESTUREINFO const * PCGESTUREINFO;	 

Esempio

  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);
    }
  }

Requisiti

   
Client minimo supportato Windows 7 [solo app desktop]
Server minimo supportato Windows Server 2008 R2 [solo app desktop]
Intestazione winuser.h (include Windows.h)

Vedi anche

GetGestureInfo

Strutture

WM_GESTURE