Windows 触控手势示例 (MTGestures)

本部分介绍 Windows 触摸手势示例。

Windows 触控手势示例演示了如何使用手势消息通过处理 WM_GESTURE消息来 转换、旋转和缩放图形设备接口 (GDI) 呈现的框。 以下屏幕截图显示了示例在运行时的外观。

显示运行时的 Windows 触摸手势示例的屏幕截图,屏幕上有一个旋转的黑色矩形白色矩形

对于此示例,手势消息将传递到手势引擎,该引擎随后调用绘图对象上的方法,以转换、旋转和缩放具有处理这些命令的方法的对象。 为了帮助显示示例的工作原理,请考虑使用双指点击命令在呈现的框中启用或禁用对角线的步骤。 用户执行双指点击手势,这将生成由程序处理的消息。 处理消息时,它将切换布尔值以在绘图对象上呈现对角线,然后对象将呈现对角线。

以下代码演示如何将手势消息从 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);
    }

多点触控手势应用程序 (C#) 多点触控手势应用程序 (C++) Windows 触控示例