2019-11-12-浅谈-Windows-桌面端触摸架构演进

网友投稿 728 2022-09-15

2019-11-12-浅谈-Windows-桌面端触摸架构演进

2019-11-12-浅谈-Windows-桌面端触摸架构演进

title

author

date

CreateTime

categories

浅谈 Windows 桌面端触摸架构演进

lindexi

2019-11-12 14:37:31 +0800

2019-11-12 08:41:21 +0800


我在和小伙伴水触摸相关的坑,说到了上古的触摸,很难和小伙伴统一知识,于是就写了本文用于告诉大家,桌面端的触摸架构是如何一步步演进的

所有触摸架构都建立在系统之上,和系统版本相关。所以可以通过系统划分。虽然说是触摸架构,但是我能知道的也就是应用层面的接口和编程方法,如果是小伙伴被标题吸引过来的,想看触摸架构,那么请左转官方的 ​​文档​​

在 XP 之前的系统,在开发行业,触摸屏只有少数游戏才能使用,此时触摸屏不是标准设备,各个应用需要通过端口访问硬件设备。也就是软件没有通过系统,直接和硬件通讯做到触摸。因为没有约定好触摸屏标准,可能有些触摸屏用的是PIN输入,有些用蓝牙输入,在上古的开发者都是非常厉害的,所以实现起来十分诡异。在这里是无法说明架构的,每个公司都可以使用自己的方式开发。请看 ​​Windows for Pen Computing​​

在 XP 的时候,此时触摸屏成为 HID 设备,也就是有了标准。可以在系统上支持触摸屏,我记得在缺少补丁和驱动将会只支持单点触摸,如果需要支持多点触摸,需要额外的补丁或驱动。这部分我没有去查文档,如有错误,请告诉我。在 XP 的触摸存在很多坑,如果要在 XP 上开发支持多点触摸的应用,需要用一些有趣的技术,如​​TUIO​​等。此时的触摸屏还是作为 Mouse 用,此时我将这一代的触摸架构称为上古的触摸

在 Vista 和 Win7 才算支持多点触摸,此时的应用默认可以收到了 Gestures 消息,如果注册了 ​​RegisterTouchWindow​​​ 的窗口将会接收到 ​​Touch​​​ 消息,此时通过 Touch 消息就能做到多指触摸,请看 ​​Detecting and Tracking Multiple Touch Points​​

在 Win7 的触摸是通过硬件设备作为 HID 设备,通过 HAL 层收集到信息,通过系统驱动进行转发消息。此时的硬件将不是直接连接到软件,中间会经过很多层,此时系统将会处理很多触摸的细节,开发的难度降低。但是这也存在一个坑就是系统的稳定性,如果系统没有正确处理触摸消息和触摸消息的转发,那么将会让应用或系统触摸失效

但是微软发现在书写时,如果走 Touch 消息,此时因为需要经过 Windows 消息,速度没有之前从硬件获取的快,于是提出了 Windows Inking Service Platform 请看 ​​WPF 触摸到事件​​

在 Win7 的这个触摸架构就是古代的触摸

很多开发者都会反馈在 Win7 开发的触摸失效问题,如 ​​WPF 客户端开发需要知道的触摸失效问题​​ 和需要区分 Touch 和 Stylus 和鼠标事件,这样的开发成本比较高

在 Windows 8 提出了现代的触摸方法,通过 Pointer 表示,无论是鼠标还是触摸还是笔都是使用相同的 Pointer 消息,这个触摸架构将会对触摸有很好的支持。默认在 UWP 应用使用这个触摸架构,而 WPF 程序可以通过 ​​这个方法​​​ 开启,对于 win32 应用需要使用 ​​EnableMouseInPointer​​ 方法在进程内开启

在上古的系统,因为触摸屏没有大量使用,也没有标准,只能各个应用读写硬件设备自己做触摸。在 XP 的时候,开始引入触摸屏 HID 设备标准(不确定win98又没引入,毕竟我不是学历史的) 此时触摸刚起步,存在很多不合理的设计,多点触摸还没有完善,需要依赖额外的驱动和补丁。在 Win7 将触摸作为 Windows 消息,支持了多点的触摸,同时兼容 XP 和上古的和硬件设备读写的软件,但是 Win7 系统消息的转发受补丁和驱动的影响,也会存在一些触摸失效,同时因为 Touch 消息和鼠标消息分开,降低了开发效率。在 Win8 提出了 Pointer 消息,可以将触摸等合并为相同的消息

本文主要的是下面文档,更多细节请看文档

​​Introduction to WPF 4 Multitouch – Jaime Rodriguez​​

​​c# - WPF supports touch or multi-touch screen? - Stack Overflow​​

​​MultiTouch driver for Windows XP Tablet PC Edition 2005 - ThinkPad X60 Tablet, X61 Tablet, X200 Tablet - PL​​

​​Getting Started with Windows Touch Messages​​

​​Getting Started with Windows Touch Gestures​​

​​TranslateZoomRotateBehavior​​

​​Pointer Input Messages and Notifications​​

​​win10 支持默认把触摸提升 Pointer 消息​​

​​WPF 触摸到事件​​

​​WPF 客户端开发需要知道的触摸失效问题​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:C# 数据操作系列 - 5. EF Core 入门(c反应蛋白高说明什么)
下一篇:2018-9-20-在-Windows-下那些好用的调试软件
相关文章

 发表评论

暂时没有评论,来抢沙发吧~