Windows 触控手势示例 (MTGestures)
本部分介绍 Windows 触摸手势示例。
Windows 触控手势示例演示了如何使用手势消息通过处理 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);
}