Windows中多指针输入技术的实现与应用(9 我设想用来实现MFC多鼠标的透明窗口源代码。。。)
分享用MFC创建透明窗口模拟鼠标指针的代码,是多鼠标系统开发的基础。
分享用MFC创建透明窗口模拟鼠标指针的代码,是多鼠标系统开发的基础。
首先要说的是,此文的主要内容都来自本人写的毕业论文,以前有一些网友表示过兴趣,他们有的是想要学习利用此种技术的,有的是想与我合作发觉商业价值的,也有一位和我一样是准备做毕业论文的,由于当心过早在网上传播此文,学校方面会误解我论文的来历,所以一直没有敢在网上透露太多细节,而近一段时间又开始找工作,非常的忙,所以在论文完成后自己的进一步完善的MFC的多鼠标类又没有真正的结果,而明天我就要去北京找工作了,可能又有比较长一段时间不能做出更多的成果,甚至很容易把近期所学都忘了,所以干脆早点把此文在网上发布吧,至于最后部分的完善就有待我找到工作以后去了。
在此以CPNMOUSE为例,看截图就都知道了,简而言之就是当同时操作两个鼠标的时候会导致混乱,我提供的建议是,你可以考虑完全不管系统鼠标,完全自己控制每个鼠标的输入数据,或者,你可以像SDG Toolkit那样,将系统鼠标的控制权交在某一个鼠标手中,由系统控制,而其他鼠标的输入数据完全由自己控制。
Windows中多指针输入技术的实现与应用(6 Single Display Groupware Toolkit的应用)
4.Single Display Groupware Toolkit的应用
在新设计软件中要加入多指针设备的输入,通过分析对比,目前最成熟的方案是利用SDG Toolkit实现,SDG Toolkit包含了其他方案的很多优点,而且使用的方便程度及官方的文档支持,甚至强过微软目前的MultiPoint SDK,而且效率上实现的非常好,加入SDG Toolkit的事件后,甚至看不出与原有软件的效率区别。还有就是因为SDG Toolkit是开源软件,自己可以进一步改进效率,比如去除不需要的部分重新编译以得到更精简的代码。最大的缺点就是此项目从2004年开始已停止更新,很难加入对未来Windows版本的直接支持,并且因为技术原因不能运行在Windows 9X上,导致目前SDG Toolkit可以预知的使用环境仅仅是Windows XP/NT系统。考虑到微软将来在Windows Vista中的直接支持及MultiPoint SDK将来的技术升级,利用MultiPoint SDK实现是将来有前途的实现。而假如不愿意受制于微软的Visual Studio.Net编程环境,或者希望在Windows 9X中也能运行,可以接受的方案就是自己利用RawInput技术实现或则利用CPNmouse库。对于一般情况,SDG Toolkit将是目前最好的选择。以下简要讲解了SDG Toolkit的使用方法,仍旧主要通过鼠标指针的绘制及输入数据的识别两方面讲述,并以Visual Studio .NET 2005 下使用C#语言编程控制3个鼠标为例,其中一个为PS/2,两个为USB接口。
3 利用多鼠标输入框架软件实现
3.1 利用CPNmouse库的实现
CPNmouse是sourceforge上的一个开源项目,最先由过滤式鼠标驱动实现的作者 M.Westergaard发起,主要原理就是利用了文献[9]提到方法,并效率较高的实现一个高层的框架级程序,并提供一组API供开发者使用。
Windows中多指针输入技术的实现与应用(4多鼠标输入的底层实现)
2 多鼠标输入的底层实现
2.1 通过开发过滤式鼠标驱动的实现
Windows中多指针输入技术的实现与应用
计算机科学的是目前发展最快的几个领域之一,人机交互的方式也经历着重大的变革。众所周知,输入设备是人机交互最主要的设备。最开始的计算机使用的输入设备是非常不方便的读卡器和磁带驱动器, 那时用户不直接与计算机系统交互,而是准备好一个作业(由程序、数据和一些控制信息(控制卡片)组成)并提交给计算机操作员。作业一般以穿孔卡片的形式提交。[1,3-4]目前键盘和指针设备是微机上最常用的输入设备,扫描仪和光电笔等输入设备的应用也越来越广泛。键盘主要用来输入文字,而我们可以方便快捷地用指针设备指定光标在屏幕上的位置。尤其是在Windows环境里,操作几乎离不开指针设备。指针设备主要包括最常用的鼠标, 以及触控板,触摸屏 ,轨迹球, 指点杆和光线枪。通常我们家用机使用的是鼠标,笔记本使用的是触控板,[2]而触摸屏在商业领域得到了很广泛的应用。一般来说使用单指针设备加键盘就能满足需求,其接口模型如图1.1。
多指针设备输入在很多情况下有很大的优势。但是微软的Windows本身并不支持此技术,让程序在Windows下支持多个指针设备,并且控制各自独立的光标就成了软件设计者问题。本文介绍了目前可行的,底层和利用框架软件实现的两大类方法。在底层实现中,详细讲述了利用RawInput技术实现多鼠标输入的原理。在框架软件实现中,详细讲述了一种多鼠标输入框架软件Single Display Groupware Toolkit的实现原理。并对各种方法进行了简单描述和总的对比,其中开发过滤式鼠标驱动的方法主要用来开发框架级程序;RawInput技术因为优点明显,被各层次的软件所利用;CPNmouse库是对通用多指针输入软件开发很好的尝试,但是并不是太成功;MultiPoint SDK虽然由微软推出,可是目前并不成熟;Single Display Groupware Toolkit综合了以上各技术的很多优点,缺点比较少,软件相对成熟,使用比较简单。本文推荐实现Windows中多指针输入技术的方法为使用Single Display Groupware Toolkit。最后简单介绍了Single Display Groupware的具体使用方法。因为Single Display Groupware Toolkit在MFC中使用不是那么方便,所以最后讨论一下在MFC中怎么自己实现和利用此技术,然后给出两个实例研究。
在微软Windows中支持多指针设备
原文作者:Michael Westergaard
在此声明:此文为本人毕业论文翻译的文章,请勿转载,不然出现什么问题,本人可是要找麻烦的。特别是出现学校方面因为在网上发现此文怀疑本人抄袭的时候。另外,因为本文已经收录在学校了,所以我有足够的证据能证明我上交此文的时间先于网络上有此文的时间。原文请到google上搜索,我不转载,不过也可以到我创建的讨论多鼠标的google群里面去下载,http://groups.google.com/group/Single-Display-Groupware
摘要: 本文描述了在微软Windows中的一个包含多指针设备支持API的实现。微软Windows本来不支持多指针设备控制独立的指针,但是我们或其他人已经完成了很多解决此问题的实现。在这里我们描述了一个通常的解决方法,和一个应用程序怎么样可以通过一个框架使用它。这个设备驱动程序和支持其的API将免费提供。感兴趣的人可以联系作者以获得更多信息。
介绍一个C++算法性能比较函数,可自动测量多个算法在不同数据规模下的运行时间,并将结果输出到文件,方便直观对比优劣。