Share via


Ejemplo de gestos táctiles de Windows (MTGestures)

En esta sección se describe el ejemplo de gestos táctiles de Windows.

En el ejemplo gestos táctiles de Windows se muestra cómo usar mensajes de gestos para traducir, girar y escalar un cuadro representado por la Interfaz de dispositivo gráfico (GDI) controlando el mensaje de WM_GESTURE . En la captura de pantalla siguiente se muestra cómo se ve el ejemplo cuando se está ejecutando.

captura de pantalla que muestra la muestra de gestos táctiles de Windows cuando se está ejecutando, con un rectángulo blanco girado y con contorno negro en la pantalla

Para este ejemplo, los mensajes de gestos se pasan a un motor de gestos, que a continuación llama a métodos en objetos de dibujo para traducir, girar y escalar un objeto que tiene métodos para controlar estos comandos. Para ayudar a mostrar cómo funciona el ejemplo, tenga en cuenta los pasos para usar el comando de pulsación de dos dedos para habilitar o deshabilitar las líneas diagonales en el cuadro representado. Un usuario realiza el gesto de pulsación de dos dedos, que genera un mensaje que controla el programa. Cuando se controla el mensaje, alternará un valor booleano para representar diagonales en el objeto de dibujo y, a continuación, el objeto representará las líneas diagonales.

En el código siguiente se muestra cómo se pasan los mensajes de gestos al motor de gestos desde el método WndProc.

    case WM_GESTURE:
        // The gesture-processing code is implemented in the CGestureEngine
        // class.
        return g_cGestureEngine.WndProc(hWnd,wParam,lParam);
        break;

En el código siguiente se muestra cómo controla el motor de gestos el comando de pulsación de dos dedos.

// Two-finger tap command
void CMyGestureEngine::ProcessTwoFingerTap(void)
{
    if(_pcRect)
    {
        _pcRect->ToggleDrawDiagonals();
    }
}

En el código siguiente se muestra cómo el objeto de dibujo alterna sus diagonales.

void ToggleDrawDiagonals(void){_bDrawDiagonals = !_bDrawDiagonals;}

En el código siguiente se muestra cómo el objeto representa las líneas diagonales en su método draw.

    if(_bDrawDiagonals)
    {
        // draw diagonals
        MoveToEx(hdc,ptRect[0].x,ptRect[0].y,NULL);
        LineTo(hdc,ptRect[2].x,ptRect[2].y);
        MoveToEx(hdc,ptRect[1].x,ptRect[1].y,NULL);
        LineTo(hdc,ptRect[3].x,ptRect[3].y);
    }

Aplicación de gestos multitáctil (C#),Aplicación de gestos multitáctil (C++), Ejemplos táctiles de Windows