编程指南:体系结构概述

来源:互联网 发布:电视机看视频软件 编辑:程序博客网 时间:2024/06/13 14:23

编程指南

        本节涵盖有关使用面向Windows 7操作系统的Windows Touch API进行软件开发的特定主体。

        本节涵盖了以下主体。

主题说明体系结构概述描述Windows Touch API for Tablet,并说明它如何适合更大的Windows 7上下文。选择使用Windows Touch的适当方法介绍可支持Windows Touch的各种方法。应用程序疑难解答提供常见问题的解决方案。Windows Touch输入说明可以如何接受和解释Windows Touch消息。Windows Touch笔势说明如何为应用程序添加Windows Touch笔势支持。操作和延时说明如何为应用程序添加操作和延时支持。

体系结构概述

        此体系结构概述提供了有关Windows Touch API for Tablet和触摸屏技术的背景信息,并说明它如何适合更大的Windows 7体系结构。


有关Windows Touch输入和笔势的消息

        可通过在执行过程中侦听和解释消息来启用Windows Touch的消息传递功能。下图延时如何从硬件生成消息并通过Windows 7将消息发送到应用程序。


        在该图的最左边的列中,触摸感应硬件接收来自用户的输入。然后,驱动程序在硬件和OS之间进行通信。接下来,OS生成WM_TOUCH或WM_GESTURE消息,该消息稍后将发送到应用程序的HWND。然后,在消息中已封装相关信息的情况下,应用程序将更新UI。

        默认情况下,应用程序接收笔势。除非应用程序使用RegisterTouchWindow函数注册Windows Touch输入消息,否则Windows将创建笔势(WM_GESTURE消息)通知,并将其发送到应用程序窗口。如果一个应用程序窗口注册以接收触控消息,则将Windows Touch输入(WM_TOUCH消息)的通知发送到该应用程序窗口。从某种意义上说,在产生触控或在应用程序窗口上开始笔势之后,Windows Touch和笔势消息是贪婪的,所有消息将发送到该应用程序,直至笔势完成或主触控完成。

        对于旧版支持,Windows将会解释弹出的WM_GESTURE消息,然后对映射到笔势的适当消息执行SEND或POST操作。若要避免中断旧版支持,请确保使用DefWindowProc转发WM_GESTURE消息。有关旧版支持的更多信息,请参见Windows Touch笔势概述。


操作和延时

        Windows Touch编程人员必须能够以对发生的笔势有意义的方式解释来自多个源的笔势。Microsoft提供用于执行这些计算的操作API。操作实质上是带有值得笔势,这些值与笔势关联并描述整个笔势。在将输入数据连接到操作处理器之后,可以检索与用户对对象执行的操作相关的信息。下图演示一种使用操作的方法。


        在该图的左上角,用户已触摸屏幕,这将创建触控消息。这些消息包含一个x坐标和一个y坐标,二者用于确定用于焦点的对象。处于焦点的对象包含一个操作处理器。接下来,在带有TOUCHEVENT_UP标志的WM_TOUCH消息上执行以下操作:选择用户焦点的对象,引用操作处理器,并将消息发送到操作处理器。与此触控点关联的后续WM_TOUCH消息将发送到操作处理器,直到接收带有TOUCHEVENT_UP标志的WM_TOUCH消息并将选定对象解除引用。在该图的右下部分中,使用实现_IManipulationEvents接口的操作事件接收器来处理操作事件,这些操作事件是在创建触控消息时引发的。当发生操作事件时,事件接收器会根据这些事件来执行对接口的更新。

        在Windows Touch应用程序中,通常采用简单的物理学原理使对对象在不再被触摸的情况下光滑地停止,而不是突然停止。Microsoft提供了延时API来执行这些简单的物理学原理计算,以便你的应用程序的行为与其他应用程序的行为类似。这还将减少创建可靠地物理学功能所需的工作量。下图演示如何使用延时。


        请注意延时和操作之间的相似之处。二者之间唯一的差别是,对延时而言,解释的消息将传递给延时处理器而不是操作处理器,并且延时处理器会引发事件。在该图的左上角,在带有TOUCHEVENT_UP标志的WM_TOUCH消息上,触控消息用于标识一个处于焦点的对象,该对象包含延时处理器和操作处理器。后续的WM_TOUCH消息将发送到操作处理器,并且操作处理器执行对应用程序UI的更新。在操作完成后,使用操作中的速度值来设置延时处理器。如中间列所示,使用计时器或独立线程中的其他循环对IInertiaProcessor接口调用Process或ProcessTime方法,知道这些调用指示处理器已完成处理。在进行这些调用时,将引发操作事件,操作事件接收器将基于_IManipulationEvents接口处理这些操作事件。在改图的右下部分中,稍后在操作事件通过此事件接收器中的事件处理程序发生时,此事件接收器将基于这些操作事件执行对应用程序UI的更新。


http://msdn.microsoft.com/zh-cn/library/windows/desktop/dd317323(v=vs.85).aspx

http://msdn.microsoft.com/zh-cn/library/windows/desktop/dd371413(v=vs.85).aspx

0 0
原创粉丝点击