资源描述:
《windows系统的多显示器模式的编程 》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、Windows系统的多显示器模式的编程这几天研究了一下Windows系统的多显示器模式的编程,实现了Windows下支持10显示器模式的通用com组件,这里做一个整理和回顾,希望能对再这方面开发的兄弟们有些启发和帮助:(一)Windows系统下的多显示器模式的原理Microsoft新的操作系统(Windows98\Windows2000\WindowsXP)内置丫对多监视器的支持,即用户可以在一台计算机上安装多个S示卡并接上多个显示器,然后把这些显示器的显示区域组织成一个大的虚拟的Windows桌而。每一个显示区域的底部都有系统任务栏,我们可以在任何一个显示区域内增加桌面快捷
2、方式,这样就可以在第一个显示区域上用VisualC++编程,同吋在第二个显示区域上打开InternetExplorer上网再也不用进行麻烦的切换了。多显示器模式的原理实际上很简单,主要还是要靠操作系统的支持,比如WinXP就支持10个显示器,本文所使用的调试和开发环境都是以WinXP为主,其余的原理都相同慢慢调试就行了.Windows提供的多显示器模式主要有以下三个功能:1.更大的Windows桌面:在多显示器模式下,可以把多个显示器的显示区域结合在一起来显示Windows桌面,不管这些显示器的尺寸、物理位置、分辨率和刷新频率是否相同。当我们运行一个应用程序时,程序的主窗口可以位
3、于任何一个显示器的显示区域内,也可以跨多个显示区域。我们也可以把一个程序的窗口从一个显示区域移到另一个显示区域屮。2.屏幕复制或远程显示:我们可以让两个显示器显示相同的内容。在进行培训或者向众人进行演示时,这个特点是很有川的。利用这个特性,技术支持人员还可以对应用程序进行远程监视和调试。3.多重独立显示:在以上的两种模式下,所有的显示区域都是Windows虚拟桌面的一部分,但是在多重独立显示模式下,应用程序访问的显示器并不属于Windows虚拟桌面。假设系统的第二个显示器是一个高分辨率的大尺汴显示器,我们可以把它川做CAD应用程序的专用显示。通过在CAD应用程序中调用新的Wind
4、owsAPI,我们可以借助GDI在上而画阁。独立显示器的显示区域没有桌而上的任何对象(任务栏和快捷方式),它与Windows染面是独立的。这可以避免Windows染面对应用程序输出的任何干扰,我们也不用担心会在无意中把其它的窗口拽到独立显示的显示区域中,这种方式就好像为应用程序提供了一个专用的显示器。(二)理解虚拟桌而(VirtualDesktop)及其-坐标既然是要对多显示器模式进行编程和开发,那么我们就要首先理解Windows的虛拟桌面(VirtualDesktop)及其坐标了.这是我们编程开发的基础,理解了一切就很顺利了,几乎没在单显示器系统中,实际Windows桌面的形状
5、和大小与显示器是相同的。在多显示器模式下,每一个显示器实际上是一个大虚拟桌面的一个“子视窗”。我们可以通过控制而板屮的显示器属性对每一个显示器的显示区域的大小(分辨率)和相对位罝进行调整,所有这些显示区域互相连接但并不重叠。罔一屮的显示器1是主敁示器,主显示器的作用是确定虛拟桌Ifif的坐标。不管主显示器的位置如何,它的显示区域的左上角的坐标定力虚拟坐标的零点(0,0),右下角的坐标是(X—1,Y—1)(假没主显示器的分辨率为XxY),其余显示区域的坐称巾它和主显示器的相对位置决定。通常虚拟桌而屮显示区域的相对位貫和实际显示器的物理相对位貫是相同的。因为所有显示区域必须相连,因此
6、可以用一个包含所有显示区域的最小矩形来表示虚拟桌面的大小。图—中的矩形边界代表了虚拟桌面的范围。[Page]因为虚拟桌面中的坐标系统必须是连续的,因此第二个显示区域的坐标是主显示器的显示区域的继续。假设两个显示器都使用1024x768的分辨率,并且第二个显示器位于第一个显示器(主显示器)的正右方,则第二个显示区域的坐标是从(1024,0)到(2047,767)。但是并不是所有的显示区域都具有相同的分辨率,而且这些显示区域也不一定是底边对齐的。就像阁一屮显示的那样,你真正能看到的有效显示区域是红色+兰色+紫色的不规则区域,而黄色区域虽然也属于虚拟桌面的一部分,但它不属于任何一个显示
7、区域,这部分也叫做无效区域。如图一中所示,假设显示器1的分辨率是1024x768,显示器2的分辨率为800x600,显示器3的分辨率为640x480。零点的位置如图巾所示,显示器1的坐标为(0,0)至IJ(1023,767),显示器2的坐标为(一800,168)至ij(―1,767),显示器3的坐标是(1024,0)到(1663,479)。而(一800,0)到(一1,167)以及(1024,480)到(1663,767)这两块无效区域是不能品示任何信息的,系统不会允许用户把鼠标移