Compartir a través de


Función SetGestureConfig (winuser.h)

Configura los mensajes que se envían desde una ventana para los gestos de Windows Touch.

Sintaxis

BOOL SetGestureConfig(
  [in] HWND           hwnd,
  [in] DWORD          dwReserved,
  [in] UINT           cIDs,
  [in] PGESTURECONFIG pGestureConfig,
  [in] UINT           cbSize
);

Parámetros

[in] hwnd

Identificador de la ventana en el que se va a establecer la configuración de gestos.

[in] dwReserved

Este valor está reservado y debe establecerse en 0.

[in] cIDs

Recuento de las estructuras de configuración de gestos que se pasan.

[in] pGestureConfig

Matriz de estructuras de configuración de gestos que especifican la configuración de gestos.

[in] cbSize

Tamaño de la estructura de configuración de gestos (GESTURECONFIG).

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, use la función GetLastError .

Observaciones

Si no espera cambiar la configuración de gestos, llame a SetGestureConfig en el momento de la creación de la ventana. Si desea cambiar dinámicamente la configuración de gestos, llame a SetGestureConfig en respuesta a WM_GESTURENOTIFY mensajes.

En la tabla siguiente se muestran los identificadores de los gestos admitidos por el miembro dwID de la estructura GESTURECONFIG . Tenga en cuenta que establecer dwID en 0 indica que se establecen las marcas de configuración de gestos globales.

Nombre Value Descripción
GID_ZOOM 3 Opciones de configuración para el 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 Gesto de presionar y pulsar.
 

Las marcas siguientes se usan cuando dwID se establece en cero.

Nombre Value Descripción
GC_ALLGESTURES 0x00000001 Todos los gestos.
 

Las marcas siguientes se usan cuando dwID se establece en GID_ZOOM.

Nombre Value Descripción
GC_ZOOM 0x00000001 Gesto de zoom.
 

Las marcas siguientes se usan cuando dwID se establece en GID_PAN.

Nombre Value Descripción
GC_PAN 0x00000001 Todos los gestos de movimiento panorámico.
GC_PAN_WITH_SINGLE_FINGER_VERTICALLY 0x00000002 Paneles verticales con un dedo.
GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY 0x00000004 Paneles horizontales con un dedo.
GC_PAN_WITH_GUTTER 0x00000008 Movimiento panorámico con un límite de margen alrededor de los bordes de la región desplazable. El límite del margen limita el movimiento perpendicular a una dirección primaria hasta que se alcanza un umbral para salir del canalón.
GC_PAN_WITH_INTERTIA 0x00000010 Movimiento panorámico con inercia para ralentizar suavemente cuando se detengan los gestos de movimiento panorámico.
 
Nota Los gestos de movimiento panorámico se pueden usar junto entre sí para controlar el comportamiento. Por ejemplo, establecer los bits dwWant en movimiento panorámico con horizontal de un solo dedo y establecer los bits dwBlock en vertical de un solo dedo restringirá el movimiento panorámico a los paneles horizontales. Si se cambia el bit dwWant para que tenga GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY y quite el movimiento panorámico vertical de un solo dedo del bit dwBlock , se habilitará el movimiento panorámico vertical y horizontal.
 
Nota De forma predeterminada, el movimiento panorámico tiene habilitada la inercia.
 
Nota Una sola llamada a SetGestureConfig no puede incluir otros GID junto con 0.
 
Las marcas siguientes se usan cuando dwID se establece en GID_ROTATE.
Nombre Value Descripción
GC_ROTATE 0x00000001 Gesto de rotación.
 

Las marcas siguientes se usan cuando dwID se establece en GID_TWOFINGERTAP.

Nombre Value Descripción
GC_TWOFINGERTAP 0x00000001 Gesto de pulsación de dos dedos.
 

Las marcas siguientes se usan cuando dwID se establece en GID_PRESSANDTAP.

Nombre Value Descripción
GC_PRESSANDTAP 0x00000001 Gesto de presionar y pulsar.
 
Nota Al llamar a SetGestureConfig , se cambiará la configuración de gestos durante la vigencia de la ventana, no solo para el siguiente gesto.
 

Ejemplos

En el ejemplo siguiente se muestra cómo se puede recibir movimiento panorámico horizontal y vertical de un solo dedo sin medianil y sin inercia. Se trata de una configuración típica para una aplicación de navegación 2D, como la aplicación Globo de Píxeles de Microsoft.

// set up our want / block settings
DWORD dwPanWant  = GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY;
DWORD dwPanBlock = GC_PAN_WITH_GUTTER | GC_PAN_WITH_INERTIA;

// set the settings in the gesture configuration
GESTURECONFIG gc[] = {{ GID_ZOOM, GC_ZOOM, 0 },
                      { GID_ROTATE, GC_ROTATE, 0},
                      { GID_PAN, dwPanWant , dwPanBlock}                     
                     };    
                     
UINT uiGcs = 3;
BOOL bResult = SetGestureConfig(hWnd, 0, uiGcs, gc, sizeof(GESTURECONFIG));  

if (!bResult){                
    DWORD err = GetLastError();                                       
}

En el ejemplo siguiente se muestra cómo recibir gestos de movimiento panorámico de un solo dedo y deshabilitar el movimiento panorámico del canalón. Se trata de una configuración típica para las aplicaciones que desplazan texto como el Bloc de notas.

Nota Debe establecer explícitamente todas las marcas que desee habilitar o deshabilitar al controlar el movimiento panorámico de un solo dedo.
 
// set up our want / block settings
DWORD dwPanWant  = GC_PAN | GC_PAN_WITH_SINGLE_FINGER_VERTICALLY;                    
DWORD dwPanBlock = GC_PAN_WITH_GUTTER;    

// set the settings in the gesture configuration
GESTURECONFIG gc[] = {{ GID_ZOOM, GC_ZOOM, 0 },
                      { GID_ROTATE, GC_ROTATE, 0},
                      { GID_PAN, dwPanWant , dwPanBlock}                     
                     };    
                     
UINT uiGcs = 3;
BOOL bResult = SetGestureConfig(hWnd, 0, uiGcs, gc, sizeof(GESTURECONFIG));  

if (!bResult){                
    DWORD err = GetLastError();                                       
}   

En el ejemplo siguiente se muestra cómo se pueden deshabilitar todos los gestos.

// set the settings in the gesture configuration
GESTURECONFIG gc[] = {0,0,GC_ALLGESTURES};
                     
UINT uiGcs = 1;
BOOL bResult = SetGestureConfig(hWnd, 0, uiGcs, gc, sizeof(GESTURECONFIG));  

if (!bResult){                
    DWORD err = GetLastError();                                       
}

En el ejemplo siguiente se muestra cómo se pueden habilitar todos los gestos.

GESTURECONFIG gc = {0,GC_ALLGESTURES,0};

UINT uiGcs = 1;

BOOL bResult = SetGestureConfig(hWnd, 0, uiGcs, &gc, sizeof(GESTURECONFIG));  

if (!bResult){                
    DWORD err = GetLastError();                                       
}              

En el ejemplo siguiente se muestra cómo habilitar todos los gestos de Windows 7.

// set the settings in the gesture configuration
GESTURECONFIG gc[] = {{ GID_ZOOM, GC_ZOOM, 0 },
                      { GID_ROTATE, GC_ROTATE, 0},
                      { GID_PAN, GC_PAN , 0},
                      { GID_TWOFINGERTAP, GC_TWOFINGERTAP , 0},
                      { GID_PRESSANDTAP, GC_PRESSANDTAP , 0}
                     };    
                     
UINT uiGcs = 5;
BOOL bResult = SetGestureConfig(hWnd, 0, uiGcs, gc, sizeof(GESTURECONFIG));  

if (!bResult){                
    DWORD err = GetLastError();                                       
}

La siguiente configuración de ejemplo establecería la ventana primaria para habilitar la compatibilidad con el zoom, el movimiento panorámico horizontal y el movimiento panorámico vertical, mientras que la ventana secundaria solo admitiría el movimiento panorámico horizontal.

// set up our want / block settings for a parent window
DWORD dwPanWant  = GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY;
DWORD dwPanBlock = GC_PAN_WITH_GUTTER | GC_PAN_WITH_INERTIA;

// set the settings in the gesture configuration
GESTURECONFIG gcParent[] = {{ GID_ZOOM, GC_ZOOM, 0 },
                            { GID_PAN, dwPanWant , dwPanBlock}                         
                           };    

// Set the pan settings for a child window
dwPanWant  = GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY;
dwPanBlock = GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | GC_PAN_WITH_GUTTER | GC_PAN_WITH_INERTIA;
                     
GESTURECONFIG gcChild[]  = {{ GID_ZOOM, 0, GC_ZOOM },
                            { GID_PAN, dwPanWant , dwPanBlock}                         
                           };    

UINT uiGcs   = 2;
BOOL bResult = FALSE;
                     
if (isParent){      
  bResult = SetGestureConfig(hWnd, 0, uiGcs, gcParent, sizeof(GESTURECONFIG));  
}else{
  bResult = SetGestureConfig(hWnd, 0, uiGcs, gcChild, sizeof(GESTURECONFIG));  
}

if (!bResult){                
    DWORD err = GetLastError();                                       
}

Requisitos

   
Cliente mínimo compatible Windows 7 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 R2 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winuser.h (incluir Windows.h)
Library User32.lib
Archivo DLL User32.dll

Vea también

Funciones

GESTURECONFIG

GetGestureConfig

Guía de programación para gestos

WM_GESTURENOTIFY