Windows Beispiel für Touchgesten (MTGestures)

In diesem Abschnitt wird das Beispiel für Windows Touchgesten beschrieben.

Das Beispiel für Windows Touchgesten veranschaulicht, wie Gestennachrichten zum Übersetzen, Drehen und Skalieren eines Felds verwendet werden, das von der Grafikgeräteschnittstelle (GDI) gerendert wird, indem die WM_GESTURE Nachricht behandelt wird. Der folgende Screenshot zeigt, wie das Beispiel aussieht, wenn es ausgeführt wird.

screen shot showing the windows touch gesture sample when it is running, with a rotated, black-outlined white rectangle on the screen

Für dieses Beispiel werden Gestiknachrichten an ein Gestenmodul übergeben, das dann Methoden zum Übersetzen, Drehen und Skalieren eines Objekts aufruft, das Methoden zum Behandeln dieser Befehle enthält. Um zu zeigen, wie das Beispiel funktioniert, sollten Sie die Schritte für die Verwendung des Befehls mit zwei Finger tippen, um diagonale Linien im gerenderten Feld zu aktivieren oder zu deaktivieren. Ein Benutzer führt die Geste mit zwei Fingern aus, die eine Nachricht generiert, die vom Programm behandelt wird. Wenn die Nachricht behandelt wird, wird ein boolescher Wert zum Rendern diagonaler Diagonalen im Zeichnungsobjekt verschoben, und das Objekt rendert dann die diagonalen Linien.

Der folgende Code zeigt, wie Gestennachrichten über die WndProc-Methode an das Gestenmodul übergeben werden.

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

Der folgende Code zeigt, wie das Gestikmodul den Befehl zum Tippen mit zwei Fingern verarbeitet.

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

Der folgende Code zeigt, wie das Zeichnungsobjekt seine Diagonalen umschaltet.

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

Der folgende Code zeigt, wie das Objekt diagonale Linien in seiner Draw-Methode rendert.

    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);
    }

Multi-Touch-Gestenanwendung (C#),Multi-Touch-Gestenanwendung (C++), Windows Touchbeispiele