更新时间:2024-08-19 15:16
一般情况下,计算机用户都是使用单一的显示屏来观察显示的信息,比较流行的是17英寸的显示器,可以满足一般用户的需求。但是在一些特殊的场合下,例如需要对现场进行大范围的监控、CAD绘图、或应用电子地图技术等的情况下,需要全景显示时,用户就不得不要求计算机有足够大的显示桌面,以便对场景的细节看的更清楚、操作起来更方便。
针对上述情况,即使是二十九寸的显示器其有效的显示尺寸也是十分有限的,这时候解决桌面大小问题就不得不采用分屏显示技术,Windows操作系统支持这种技术,这里的分屏显示并不是指采用分屏分配器驱动多个显示器,从而使多个屏幕显示相同的画面,就如同VC界面编程中的动态拆分效果,而是指在一台计算机上安装多个显卡带多台显示器,实现成倍的扩展计算机桌面尺寸的目的。
例如台湾Dream公司推出的ViewPacket软件,可以一边显示视频流,一边编辑Word文档,一边上网浏览网络上的信息,极大的方便了用户的使用。
通过上面的设置,虽然使Windows支持多显示器扩展桌面的功能,但也仅仅是实现了设备的连接与管理,一般Windows应用程序的窗口不能自动运行到副显示器上,用户只能通过鼠标拖动来将程序的窗口扩展到副显示器上,如果需要将程序窗口自动扩展到不同的显示器显示,必须采用相应的分屏显示编程技术。在这种技术中,可以使用Windows的User32.DLL动态连接库提供的API函数SetWindowPos(如果采用VC这个开发平台,CWnd类提供了一个同样的成员函数),它的功能是更改窗口的大小、位置及窗口的顺序,因此可以用来在多显示器桌面上实现应用程序窗体的定位显示。下面对这个函数进行详细的解释:
BOOL SetWindowPos(HWND hWnd, // 窗口的句柄;HWND hWndInsertAfter, // 窗口次序句柄,int X, // 窗口左上角的水平位置;int Y, // 窗口左上角的垂直位置;int cx, // 窗口的宽度;int cy, // 窗口的高度;UINT uFlags file://标志位;);
这里需要解释的有hWndInsertAfter、uFlags两个参数
hWndInsertAfter
窗口句柄;这个参数取以下值:
Value Meaning
HWND_BOTTOM 将要操作的窗口放置在所有窗口之下;
HWND_TOP 将操作的窗口放置在所有的窗口之上;
uFlags
规定窗口的尺寸和位置的标志,这个参数通常取以下值:
Value Meaning
SWP_DRAWFRAME 窗口重画时,绘制出窗口类中所描述的窗口的框架
SWP_HIDEWINDOW 隐藏窗口;
SWP_NOACTIVATE 窗口无任何动作;
SWP_NOMOVE
保持窗口的当前位置;
SWP_NOREDRAW 在新位置并不重画窗口;
SWP_NOSIZE 改变窗口的位置,并不改变窗口的大小,既忽略cx,cy两个参数的值;
SWP_NOZORDER 窗口重画时,保留当前的顺序,既忽略hWndInsertAfter参数的值
SWP_SHOWWINDOW Displays the window.
另,该参数还可以取其它的值,具体含义读者可以参考MSDN。
为了说明问题,下面的VB代码仅仅实现了在两个显示器分别显示不同的窗口,用户点击按钮后,主显示器显示窗口Form1,副显示器显示窗口Form2,感兴趣的读者可以稍加修改,就可以应用到实际项目开发中去。
首先在VB全局模块中声明:
其次在需要定位的两个窗口模块中调用该函数。具体的VB代码是:
Private Sub Form1_Load( )
Const HWND_TOPMOST=-1
Const SWP_NOACTIVATE=&H10
SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, ScreenWidht/2, ScreenHeight, SWP_NOACTIVATE '在主显示器的显示区域上显示窗口1;
End Sub
Private Sub Form2_Load( )
Const HWND_TOPMOST=-1
Const SWP_NOACTIVATE=&H10
SetWindowPos Me.hWnd, HWND_TOPMOST, ScreenWidht/2, 0, ScreenWidht/2, ScreenHeight, SWP_NOACTIVATE '在副显示器的显示区域上显示窗口2;
End Sub
为了正确的显示,需要将窗体的ScaleMode属性设置为twips,这样才可以与Windows系统中ScreenWidth和ScreenHeight的计量单位twips保持一致。
到2009年夏天,奔驰S级的车主与乘客将可以同时使用COMAND系统提供的导航和娱乐功能。奔驰把这种同博世合作开发的技术称作“分屏(Splitview)”。
Splitview技术将在2009年夏天应用于奔驰S级轿车
从具体的技术层面来讲,“分屏”技术能把2个不同画面的像素先进行拆分,然后“相间”地在8英寸的屏幕上排列来自不同画面的像素。这时你所看到的信息是完全零乱的。技术的关键就是奔驰会在这块LCD上附加一张过滤罩,信息交错的像素所发出的光线,经过这个过滤罩后,就会被分离成2幅独立而完整的画面了,而且这2幅画面的方向性比较强,这样不同座位上的人才可以各取所需,互不干扰。奔驰还强调,该版本的COMAND系统还可以支持2个用户随时各自调整自己的显示信息,譬如司机可以通过中控台上的按钮缩放地图,同时旁边的乘客可以用遥控器选择想看的影片,甚至电视频道。当然考虑到对驾驶安全的影响,S级肯定会提供耳机插座。
这家百年老店总是第一时间将新颖又实用的技术运用到汽车上
从根本的设计思路上,有点像风靡一时的立体电影,通过特殊的眼镜分离不同的画面,分别送到人的左眼和右眼,大脑会误认为电影是立体的。而在新一代COMAND的“分屏”技术面前,左眼是司机,右眼是乘客。
联想到立体电影经常会导致很多人眼睛不适,甚至头晕,分屏技术的画面质量是否可以得到保证,受到了人们的质疑。但奔驰对此信心十足,因为奔驰S级从未让她的客户失望过。