当前位置:
文档之家› Windows 7 中的多点触控功能
Windows 7 中的多点触控功能
利用手势,您还可以替代默认的平移行为。例如,默认的触控滚动适合在以文本为中心并通常垂直滚动的窗口
第1页共5页
2011/5/106:20
Windows7中的多点触控功能
/zh-cn/magazine/ee336016.aspx
(例如网页或文档)中使用,而水平拖动则可以进行文本选择,而不是滚动。在大多数应用程序中,这种触控 方式可以正常工作。但如果您的应用程序实际上需要支持水平滚动,该怎么办?此外,对于某些应用程序,默 认滚动可能显得不够灵活,即速度过快或过慢。有了手势支持,您可以替代默认的平移行为,并根据应用程序 的需要对其进行优化。
yourarticleintothemagazine.AsIwaslooking
itover,Ifelta...More... 执行该拖动手势可以显示LiveMessenger的跳转列表。如图 2所示,通过触控触发的跳转列表显示了与标准
右键单击跳转列表相同的内容。右侧的图像显示了使用触控触发的LiveMessenger跳转列表。多点触控启用 ‘Contraction’Resolution
thankthemany,manyresponderstothat– I’mamazed,a...More...
WindowsLiveMessenger只是一个示例,它可以证明Windows7没有专为触控方案创建一组新的UI,而 是将其结合到现有基础结构中。任务栏也只是一个示例,它可以证明Windows7提供的多点触控功能可以带 来诸多优化体验,例如XPS查看器、Windows照片查看器和IE8。
所示。
UpdatetoMarchMSDNMagazineEditor’s
Note
fig01.gif
MyMarchEditor’sNotecolumncontainsa how-toifyouwanttoensureyoudon’tget
图1:在 Live Messenger 的跳转列表上使用多点触控
延时为应用程序提供了一个非常基本的物理模型,并为您提供了一种简单的方法来继续平稳转换对象(即使在 您将手指从触敏式设备拿开以后也能平稳转换),并创建简单的转换效果,而不是立即停止对象。
使用手势
默认情况下,每当用户触摸触敏式Windows7设备时,Windows7多点触控平台都会向您的应用程序发送手 势消息WM_GESTURE。这是现成的免费行为,如果您希望停止接收此类消息,则需要选择退出。
Windows7多点触控平台还提供操作和延时处理器,帮助您解释触控消息。可以将操作视作一个黑匣子,用于 以输入形式接收用户触摸的对象,以及所有相关的触控消息。结果是一个二维仿射转换矩阵,表示通过手指移 动产生的转换。例如,如果您要编写一个照片编辑应用程序,则可以使用一个或多个手指同时捕捉两张照片, 以对照片进行旋转、调整大小和转换操作,而操作过程将提供您需要在对象上反映的变化。
Windows 7 多点触控平台编程模型
ClarificationtoJanuaryEditor’sNote
为了提供适用于各种应用程序的全面Windows触控解决方案,Windows触控平台提供了不同级别的支持。您 Severalreadershavepointedoutaninaccuracy
获取GESTUREINFO结构后,可以检查dwID以确定执行了哪个手势。GESTUREINFO结构包含几个其他重要 成员:
cbSize-结构大小(以字节为单位) ptsLocation-一个POINTS结构,其中包含与手势相关的坐标。这些坐标始终都相对于屏幕的原点 dwFlags-手势的状态,例如开始、延时和结束 ullArguments-一个64位无符号整数,其中包含手势的参数,组合为八字节。这是额外信息,对于每个 手势类型都是唯一的
深入了解Windows7
中国-简体中文 登录
YochayKiriaty
本文内容:
本文使用了以下技术:
Windows7 多点触控编程模型
手势
原始触控消息
本文基于Windows7的预发布版本。详细信息可能会有所更改。
目录 Windows7多点触控简介 Windows7多点触控平台编程模型 使用手势 处理Windows原始触控消息 摘要
Windows7中的多点触控功能
/zh-cn/magazine/ee336016.aspx
MSDN杂志
主页 主题 专栏 下载 订阅 RSS
本期 所有期刊 HTML帮助文件
使用 Bing 搜索 MSDN Magazine
MSDN杂志>主页>所有期刊>2009>MSDNMagazine八月2009> 深入了解 Windows 7:Windows 7 中的多点触控功能
本文是有关Windows7的系列文章的第三篇文章。该系列文章主要介绍了新的用户体验,开发人员可以深入 研究这些体验,使其应用程序在Windows7上发挥强大作用。第1部分介绍了库。第2部分介绍了任务栏 API。第3部分介绍Windows7中的多点触控功能。请立即下载Windows7ReleaseCandidate,以帮助您 充分理解本文。
Contraction:Distraction? Iwastoldbyanauthorthatusingcontractions (e.g.“we’ll”insteadof“wewill”, “you’re”insteadof“youare”confusio...More...
理器。Windows7任务栏跳转列表就是一个最简单的示例。使用鼠标右键单击任务栏上的任一图标时,您将看
到对应的跳转列表。例如,右键单击WindowsLiveMessenger图标可以显示LiveMessenger的跳转列 MSDN Magazine Blog
表。但如何使用多点触控实现右键单击的功能呢?只需用手指触摸LiveMessenger图标并将其拖出,如图 1
手势被视为单指或双指触控输入,可以转换为用户执行的某种预定义操作(手势)。一旦检测到手势(操作系 统为您进行所有检测),操作系统就会向应用程序发送手势消息。此消息包含解码和进行操作所需的全部信 息。Windows7支持下列手势:
缩放 单指和双指平移 旋转 双指点击 按下并点击
处理 WM_Gesture 消息要使用手势,必须处理发送到应用程序的WM_GESTURE消息。如果您是Win32 程序员,可以在应用程序的WndProc函数中检查WM_GESTURE消息。
通过Windows7多点触控平台,您可以随心所欲地直接与计算机进行交互。例如,您可以直接从Windows
资源管理器中访问和缓慢浏览图片,也可以通过点按操作快速浏览这些图片。有一点您必须清楚的是,我们并
未创建特殊的Windows7多点触控外壳程序,也未提供只能在多点触控设备上使用的特殊Windows资源管
多点触控优化体验最好的情况是从头开始设计应用程序以支持多点触控。这些应用程序基于Windows Messages触控消息WM_TOUCH构建。此消息为应用程序提供原始触控数据,您可以利用这些消息并处理多 个接触点。我们之前提到的大多数手势都是双指手势,您可以利用WM_TOUCH消息同时接收基础触敏式硬件 所支持的多个接触点。
掌握了这些知识后,我们可以继续操作并编写用于处理所有手势的完整switch-case方法,如图 3所示。
图 3:Switch-Case 方法
voidCMTTestDlg::DecodeGesture(WPARAMwParam,LPARAMlParam) { GESTUREINFOgi; ZeroMemory(&gi,sizeof(GESTUREINFO)); GetGestureInfo((HGESTUREINFO)lParam,&gi); switch(gi.dwID){ caseGID_ZOOM: //Codeforzoominggoeshere break; caseGID_PAN: break; caseGID_ROTATE: break; caseGID_TWOFINGERTAP: break; caseGID_PRESSANDTAP: break; default: //Youhaveencounteredanunknowngesture break; CloseGestureInfoHandle((HGESTUREINFO)lParam); }
Windows 7 多点触控简介
在 Windows 7 中,我们通过触控功能丰富了Windows体验,从而使触控成为继鼠标和键盘之后又一种与 PC进行交互的绝佳方式。近年来,各种多点触控设备相继问世,创造了极佳的用户体验。因此,Windows理 所当然地在Windows7中引入了这种多点触控支持,并将其作为一项核心功能。
的跳转列表中每个列表项之间的间距大于左图(默认的右键单击跳转列表)中每个列表项之间的间距。
Irecentlywroteablogentryabouttheuseof
contractionsinMSDNMagazine.First,Iwantto
fig01.gif 图2:跳转列表的多点触控视图和标准视图
且不支持多点触控的应用程序,Windows7多点触控平台提供了现成的免费支持。具体来说,它为一些基本手
势提供了现成的免费支持。换而言之,您可以在应用程序中使用一些基本手势,并获得理想的效果。基本手势
包括在WindowsVista阶段引入的单指或双指平移手势、双指缩放手势以及光标手势。
添加基本多点触控支持在本部分,我们的讨论重点是添加直接手势支持以及其他行为和用户界面更改,以使 应用程序除了支持简单手势以外还可以更好地支持触控。
在本文开头,我们已经了解一个触控优化的任务栏跳转列表示例。通过使用getMessageExtraInfo方法,任
务栏可以跟踪输入消息的来源,并确定该消息是否为触控消息,然后做出相应的响应。
CurrentIssue