Structure GESTUREINFO (winuser.h)

Stocke des informations sur un mouvement.

Syntaxe

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

Membres

cbSize

Taille de la structure, en octets. L’appelant doit définir cette valeur sur sizeof(GESTUREINFO).

dwFlags

État du mouvement. Pour plus d’informations, consultez Remarques.

dwID

Identificateur de la commande de mouvement.

hwndTarget

Handle de la fenêtre ciblée par ce mouvement.

ptsLocation

Structure POINTS contenant les coordonnées associées au mouvement. Ces coordonnées sont toujours relatives à l’origine de l’écran.

dwInstanceID

Identificateur utilisé en interne pour la structure.

dwSequenceID

Identificateur utilisé en interne pour la séquence.

ullArguments

Entier non signé 64 bits qui contient les arguments des mouvements qui tiennent en 8 octets.

cbExtraArgs

Taille, en octets, des arguments supplémentaires qui accompagnent ce geste.

Remarques

Le HIDWORD du membre ullArguments est toujours 0, avec les exceptions suivantes :

  • Pour GID_PAN, il est 0 sauf en cas d’inertie. Lorsque GF_INERTIA est défini, HIDWORD est un vecteur d’inertie (deux valeurs 16 bits).
  • Pour GID_PRESSANDTAP, il s’agit de la distance entre les deux points.
La structure GESTUREINFO est récupérée en passant le handle à la structure d’informations de mouvement à la fonction GetGestureInfo .

Les indicateurs suivants indiquent les différents états des mouvements et sont stockés dans dwFlags.

Nom Valeur Description
GF_BEGIN 0x00000001 Un mouvement commence.
GF_INERTIA 0x00000002 Un geste a déclenché l’inertie.
GF_END 0x00000004 Un mouvement est terminé.
 
Note La plupart des applications doivent ignorer les messages GID_BEGIN et GID_END et les transmettre à DefWindowProc. Ces messages sont utilisés par le gestionnaire de mouvements par défaut. Le comportement de l’application n’est pas défini lorsque les messages GID_BEGIN et GID_END sont consommés par une application tierce.
 
Le tableau suivant indique les différents identificateurs des mouvements.
Nom Valeur Description
GID_BEGIN 1 Un mouvement commence.
GID_END 2 Un mouvement se termine.
GID_ZOOM 3 Mouvement de zoom.
GID_PAN 4 Mouvement panoramique.
GID_ROTATE 5 Mouvement de rotation.
GID_TWOFINGERTAP 6 Mouvement d’appui à deux doigts.
GID_PRESSANDTAP 7 Mouvement d’appui et d’appui.
 
Note Le mouvement GID_PAN a une inertie intégrée. À la fin d’un mouvement panoramique, des messages de mouvement panoramique supplémentaires sont créés par le système d’exploitation.
 
Le type suivant est défini pour représenter un pointeur constant vers une structure GESTUREINFO .

    typedef GESTUREINFO const * PCGESTUREINFO;	 

Exemples

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

Spécifications

   
Client minimal pris en charge Windows 7 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 R2 [applications de bureau uniquement]
En-tête winuser.h (inclure Windows.h)

Voir aussi

GetGestureInfo

Structures

WM_GESTURE