Windows 触控手势概述
本部分介绍 Windows 触控支持的各种手势。
手势概述
Windows 触控支持多个手势,支持单个和多个触点。 下图说明了 Windows 7 中支持的各种手势。
注意
当触点彼此距离较远时,某些识别器在解释具有多个触点的手势时更为可靠。
旧版支持
对于旧版支持,默认笔势处理程序会将某些手势映射到以前版本的 Windows 中使用的 Windows 消息。 下表概述了手势如何映射到旧消息。
手势 | 说明 | 已生成消息 () |
---|---|---|
平移 | 平移手势映射到使用滚轮。 |
WM_VSCROLL WM_HSCROLL |
长按 | 长按手势映射到右键单击鼠标。 |
WM_RBUTTONDOWN WM_RBUTTONUP |
缩放 | 缩放手势触发类似于按住 Ctrl 键的消息,并旋转鼠标滚轮进行滚动。 | 在wParam 中设置了MK_CONTROL的WM_MOUSEWHEEL |
解释 Windows 触控手势
应用程序开发人员可以通过处理来自应用程序的 WndProc 函数的 WM_GESTURE 消息来解释 Windows 触控手势。 处理此消息后,可以检索描述手势的 GESTUREINFO 结构。 GESTUREINFO 结构将具有取决于手势类型的各种信息。
通过将手势信息结构的句柄传递给 GetGestureInfo 函数来检索 GESTUREINFO 结构。
以下标志指示手势的各种状态,并存储在 dwFlags 中。
名称 | 值 | 说明 |
---|---|---|
GF_BEGIN | 0x00000001 | 手势正在启动。 |
GF_INERTIA | 0x00000002 | 手势触发了惯性。 |
GF_END | 0x00000004 | 手势已完成。 |
注意
大多数应用程序应忽略 GID_BEGIN 并 GID_END 并将其传递给 DefWindowProc。 默认笔势处理程序使用这些消息。 当第三方应用程序使用 GID_BEGIN 和 GID_END 消息时,应用程序行为未定义。
下表指示手势的各种标识符。
名称 | 值 | 说明 |
---|---|---|
GID_BEGIN | 1 | 手势正在启动。 |
GID_END | 2 | 手势即将结束。 |
GID_ZOOM | 3 | 缩放手势。 |
GID_PAN | 4 | 平移手势。 |
GID_ROTATE | 5 | 旋转手势。 |
GID_TWOFINGERTAP | 6 | 双指点击手势。 |
GID_PRESSANDTAP | 7 | 按下和点击手势。 |
注意
GID_PAN手势具有内置的惯性。 在平移手势结束时,操作系统会创建其他平移手势消息。
GESTUREINFO 结构成员 ptsLocation 和 ullArguments 使用 POINTS 结构) 以及有关手势的其他信息(具体取决于手势)指定点 (。 下表列出了与每种手势类型关联的值。
手势 ID | ullArguments | ptsLocation |
---|---|---|
GID_ZOOM | 指示两个点之间的距离。 | 指示缩放的中心。 |
GID_PAN | 指示两个点之间的距离。 | 指示平移的当前位置。 |
GID_ROTATE | 如果设置了 GF_BEGIN 标志,则指示旋转角度。 否则,这是自旋转开始以来的角度变化。 这是为指示旋转方向而签名的。 使用 GID_ROTATE_ANGLE_FROM_ARGUMENT 和 GID_ROTATE_ANGLE_TO_ARGUMENT 宏获取和设置角度值。 | 这指示旋转的中心,即目标对象旋转的固定点。 |
GID_TWOFINGERTAP | 指示两根手指之间的距离。 | 指示两根手指的中心。 |
GID_PRESSANDTAP | 指示第一根手指与第二根手指之间的增量。 此值存储在 ullArguments 成员的下 32 位的 POINT 结构中。 | 指示第一根手指向下放置的位置。 |