Exemple de mouvement tactile Windows (MTGestures)

Cette section décrit l’exemple Windows Touch Gesture.

L’exemple Windows Touch Gesture montre comment utiliser des messages de mouvement pour traduire, faire pivoter et mettre à l’échelle une zone rendue par l’interface GDI (Graphics Device Interface) en gérant le message WM_GESTURE . La capture d’écran suivante montre à quoi ressemble l’exemple lorsqu’il est en cours d’exécution.

capture d’écran montrant l’exemple de mouvement tactile windows lorsqu’il est en cours d’exécution, avec un rectangle blanc pivoté au contour noir sur l’écran

Pour cet exemple, les messages de mouvement sont passés à un moteur de mouvement, qui appelle ensuite des méthodes sur des objets de dessin pour traduire, faire pivoter et mettre à l’échelle un objet qui a des méthodes pour gérer ces commandes. Pour vous aider à montrer comment fonctionne l’exemple, envisagez les étapes d’utilisation de la commande d’appui à deux doigts pour activer ou désactiver les lignes diagonales dans la zone rendue. Un utilisateur effectue le mouvement d’appui à deux doigts, ce qui génère un message géré par le programme. Lorsque le message est géré, il bascule une valeur booléenne pour le rendu des diagonales sur l’objet de dessin, puis l’objet affiche les lignes diagonales.

Le code suivant montre comment les messages de mouvement sont transmis au moteur de mouvement à partir de la méthode WndProc.

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

Le code suivant montre comment le moteur de mouvement gère la commande d’appui à deux doigts.

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

Le code suivant montre comment l’objet dessin bascule ses diagonales.

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

Le code suivant montre comment l’objet restitue les lignes diagonales dans sa méthode 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);
    }

Application de mouvements tactiles multiples (C#),Application de mouvements tactiles multiples (C++),Exemples tactiles Windows