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.
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. |
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. |
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) |