WINDOWS Touch 手勢範例 (MTGestures)
本節說明 Windows Touch 手勢範例。
Windows Touch 手勢範例示範如何使用手勢訊息,藉由處理 WM_GESTURE 訊息,轉譯、旋轉圖形裝置介面 (GDI) 轉譯的方塊。 下列螢幕擷取畫面顯示執行範例時的外觀。
在此範例中,手勢訊息會傳遞至手勢引擎,然後呼叫繪圖物件上的方法,以轉譯、旋轉及縮放具有處理這些命令的方法的物件。 為了協助示範範例的運作方式,請考慮使用雙指點選命令在轉譯方塊中啟用或停用對角線的步驟。 使用者會執行雙指點選手勢,這會產生程式所處理的訊息。 處理訊息時,它會切換布林值以在繪圖物件上呈現對角線,然後物件會轉譯對角線。
下列程式碼示範如何從 WndProc 方法將手勢訊息傳遞至手勢引擎。
case WM_GESTURE:
// The gesture-processing code is implemented in the CGestureEngine
// class.
return g_cGestureEngine.WndProc(hWnd,wParam,lParam);
break;
下列程式碼顯示手勢引擎如何處理雙指點選命令。
// Two-finger tap command
void CMyGestureEngine::ProcessTwoFingerTap(void)
{
if(_pcRect)
{
_pcRect->ToggleDrawDiagonals();
}
}
下列程式碼顯示繪圖物件如何切換其對角線。
void ToggleDrawDiagonals(void){_bDrawDiagonals = !_bDrawDiagonals;}
下列程式碼顯示物件如何在其繪製方法中呈現對角線。
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);
}