Estructura GESTUREINFO (winuser.h)

Almacena información sobre un gesto.

Sintaxis

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

Miembros

cbSize

El tamaño de la estructura en bytes. El autor de la llamada debe establecerlo en sizeof(GESTUREINFO).

dwFlags

Estado del gesto. Para obtener más información, vea Comentarios.

dwID

Identificador del comando de gesto.

hwndTarget

Identificador de la ventana a la que se dirige este gesto.

ptsLocation

Estructura POINTS que contiene las coordenadas asociadas al gesto. Estas coordenadas siempre son relativas al origen de la pantalla.

dwInstanceID

Identificador usado internamente para la estructura.

dwSequenceID

Identificador usado internamente para la secuencia.

ullArguments

Entero de 64 bits sin signo que contiene los argumentos de los gestos que caben en 8 bytes.

cbExtraArgs

Tamaño, en bytes, de argumentos adicionales que acompañan a este gesto.

Observaciones

La HIDWORD del miembro ullArguments siempre es 0, con las siguientes excepciones:

  • Por GID_PAN, es 0, excepto cuando hay inercia. Cuando se establece GF_INERTIA , HIDWORD es un vector de inercia (dos valores de 16 bits).
  • Por GID_PRESSANDTAP, es la distancia entre los dos puntos.
La estructura GESTUREINFO se recupera pasando el identificador a la estructura de información de gestos a la función GetGestureInfo .

Las marcas siguientes indican los distintos estados de los gestos y se almacenan en dwFlags.

Nombre Value Descripción
GF_BEGIN 0x00000001 Se inicia un gesto.
GF_INERTIA 0x00000002 Un gesto ha desencadenado la inercia.
GF_END 0x00000004 Ha finalizado un gesto.
 
Nota La mayoría de las aplicaciones deben omitir los mensajes GID_BEGIN y GID_END y pasarlos a DefWindowProc. Estos mensajes se usan en el controlador de gestos predeterminado. El comportamiento de la aplicación no está definido cuando una aplicación de terceros consume los mensajes de GID_BEGIN y GID_END .
 
En la tabla siguiente se indican los distintos identificadores de los gestos.
Nombre Value Descripción
GID_BEGIN 1 Se inicia un gesto.
GID_END 2 Un gesto termina.
GID_ZOOM 3 Gesto de zoom.
GID_PAN 4 Gesto de movimiento panorámico.
GID_ROTATE 5 Gesto de rotación.
GID_TWOFINGERTAP 6 Gesto de pulsación de dos dedos.
GID_PRESSANDTAP 7 El gesto de pulsar y presionar.
 
Nota El gesto de GID_PAN tiene inercia integrada. Al final de un gesto de movimiento panorámico, el sistema operativo crea mensajes de gestos de movimiento panorámico adicionales.
 
El siguiente tipo se define para representar un puntero constante a una estructura GESTUREINFO .

    typedef GESTUREINFO const * PCGESTUREINFO;	 

Ejemplos

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

Requisitos

   
Cliente mínimo compatible Windows 7 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 R2 [solo aplicaciones de escritorio]
Encabezado winuser.h (incluir Windows.h)

Consulte también

GetGestureInfo

Estructuras

WM_GESTURE