Compartir a través de


mensaje de WM_GESTURE

Pasa información sobre un gesto.

Parámetros

wParam

Proporciona información que identifica los valores de argumentos específicos de los gestos y el comando de gesto. Esta información es la misma información pasada en el miembro ullArguments de la estructura GESTUREINFO .

lParam

Proporciona un identificador para la información que identifica los valores de argumentos específicos de los gestos y el comando de gesto. Esta información se recupera llamando a GetGestureInfo.

Valor devuelto

Si una aplicación procesa este mensaje, debe devolver 0.

Si la aplicación no procesa el mensaje, debe llamar a DefWindowProc. Si no lo hace, la aplicación perderá memoria porque el controlador de entrada táctil no se cerrará y no se liberará la memoria del proceso asociada.

Comentarios

En la tabla siguiente se enumeran los comandos de gestos admitidos.

Id. de gesto Valor (dwID) Descripción
GID_BEGIN 1 Indica que se está iniciando un gesto genérico.
GID_END 2 Indica un extremo de gesto genérico.
GID_ZOOM 3 Indica el inicio del zoom, el movimiento del zoom o la detención del zoom. El primer mensaje de comando GID_ZOOM comienza un zoom, pero no provoca ningún zoom. El segundo comando GID_ZOOM desencadena un zoom relativo al estado contenido en el primer GID_ZOOM.
GID_PAN 4 Indica el movimiento panorámico o el inicio panorámico. El primer comando GID_PAN indica un inicio panorámico, pero no realiza ningún movimiento panorámico. Con el segundo mensaje de comando GID_PAN , la aplicación comenzará a desplazarse.
GID_ROTATE 5 Indica el movimiento o el inicio de rotación. El primer mensaje de comando GID_ROTATE indica un movimiento de rotación o un inicio de rotación, pero no rotará. El segundo mensaje de comando GID_ROTATE desencadenará una operación de rotación relativa al estado contenido en el primer GID_ROTATE.
GID_TWOFINGERTAP 6 Indica el gesto de pulsación de dos dedos.
GID_PRESSANDTAP 7 Indica el gesto de pulsar y presionar.

Nota

Para habilitar la compatibilidad heredada, los mensajes con el GID_BEGIN y los comandos de gestos de GID_END deben reenviarse mediante DefWindowProc.

En la tabla siguiente se indican los argumentos de gesto pasados en los parámetros lParam y wParam .

Id. de gesto Gesto ullArgument ptsLocation en la estructura GestureInfo
GID_ZOOM Acercar o alejar Indica la distancia entre los dos puntos. Indica el centro del zoom.
GID_PAN Movimiento panorámico Indica la distancia entre los dos puntos. Indica la posición actual del panel.
GID_ROTATE Girar (dinamizar) Indica el ángulo de rotación si se establece la marca GF_BEGIN . De lo contrario, este es el cambio de ángulo desde que se ha iniciado la rotación. Se firma para indicar la dirección de la rotación. Use las macros GID_ROTATE_ANGLE_FROM_ARGUMENT y GID_ROTATE_ANGLE_TO_ARGUMENT para obtener y establecer el valor angular. Esto indica el centro de la rotación que es el punto estacionario en el que se gira el objeto de destino.
GID_TWOFINGERTAP Pulsación de dos dedos Indica la distancia entre los dos dedos. Indica el centro de los dos dedos.
GID_PRESSANDTAP Pulse y pulse Indica el delta entre el primer dedo y el segundo dedo. Este valor se almacena en los 32 bits inferiores de ullArgument en una estructura POINT . Indica la posición en la que aparece el primer dedo hacia abajo.

Nota

Todas las distancias y posiciones se proporcionan en coordenadas de pantalla física.

Nota

Los parámetros dwID y ullArgument solo deben considerarse que acompañan a los comandos GID_* y las aplicaciones no deben modificarse.

Ejemplos

En el código siguiente se muestra cómo obtener información específica del gesto asociada a este mensaje.

Nota

Siempre debe reenviar mensajes no controladas a DefWindowProc y debe cerrar el identificador de entrada de gestos para los mensajes que se controlan con una llamada a CloseGestureInfoHandle. En este ejemplo, se suprimirá el comportamiento predeterminado del controlador de gestos porque el controlador TOUCHINPUT está cerrado en cada uno de los casos de gestos. Si quitó los casos del código anterior para los mensajes no administrados, el controlador de gestos predeterminado procesaría los mensajes reenviando a DefWindowProc en el caso predeterminado.

  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

Requisito Value
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 (incluye Windows.h)

Consulte también

Notificaciones

Guía de programación de gestos táctiles de Windows