Esempio di movimento tocco di Windows (MTGestures)
Questa sezione descrive l'esempio di movimento tocco di Windows.
L'esempio windows Touch Gesture illustra come usare i messaggi di movimento per tradurre, ruotare e ridimensionare una casella di cui viene eseguito il rendering da GDI (Graphics Device Interface) gestendo il messaggio WM_GESTURE . La schermata seguente mostra l'aspetto dell'esempio durante l'esecuzione.
Per questo esempio, i messaggi di movimento vengono passati a un motore di movimenti, che chiama quindi i metodi per disegnare oggetti per tradurre, ruotare e ridimensionare un oggetto che dispone di metodi per la gestione di questi comandi. Per illustrare il funzionamento dell'esempio, prendere in considerazione i passaggi per l'uso del comando di tocco a due dita per abilitare o disabilitare le righe diagonali nella casella di cui è stato eseguito il rendering. Un utente esegue il gesto di tocco a due dita, che genera un messaggio gestito dal programma. Quando il messaggio viene gestito, verrà attivato o disattivato un valore Boolean per il rendering delle diagonali sull'oggetto disegno e l'oggetto eseguirà il rendering delle linee diagonali.
Nel codice seguente viene illustrato il modo in cui i messaggi di movimento vengono passati al motore dei movimenti dal metodo WndProc.
case WM_GESTURE:
// The gesture-processing code is implemented in the CGestureEngine
// class.
return g_cGestureEngine.WndProc(hWnd,wParam,lParam);
break;
Il codice seguente illustra come il motore dei movimenti gestisce il comando tocco a due dita.
// Two-finger tap command
void CMyGestureEngine::ProcessTwoFingerTap(void)
{
if(_pcRect)
{
_pcRect->ToggleDrawDiagonals();
}
}
Nel codice seguente viene illustrato come l'oggetto di disegno attiva/disattiva le diagonali.
void ToggleDrawDiagonals(void){_bDrawDiagonals = !_bDrawDiagonals;}
Nel codice seguente viene illustrato come l'oggetto esegue il rendering delle linee diagonali nel relativo metodo di disegno.
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);
}
Argomenti correlati
Applicazione movimenti multitocco (C#), applicazione movimenti multitocco (C++),esempi di tocco di Windows