Windows可以将多个显示器映射为虚拟桌面,使我们可以利用这一点设计出方便工作的应用程序。例如PowerPoint就充分发挥了双显示器的优势(大多数的笔记本电脑都支持),它可以在一个显示器上播放幻灯片,而在另一个显示器上显示备注,可以控制播放的进程,使使用者做商务演说的时候非常等心应手。那么我们怎么开发这种应用程序呢?这篇文章将向你展示如果用Delphi实现使用多显示器的应用
程序。
Windows还支持克隆显示方式,每个显示器输出同样的内容,这对某些应用也是有意义的。还有些显卡虽然也支持两个显示器,不过他们并不是真正意义上的多显示器,而是虚拟高分辨率显示模式(如2048×768或者1024×1536),通过显卡将画面分别显示到两个显示器上。这两种显示模式都不是本文介绍的zhongdian,而且也非常简单,所以我们也就不再赘述了。
Windows最多支持10个显示器,Windows将所有显示器映射为一个大的虚拟桌面。可以将显示器理解为桌面某个局部的视图。在显示属性中可以根据显示器的物理位置任意排布这些显示器。如果显示器的排列不规则,虚拟桌面上的某些部分可能无法显示在任何一个显示器上。为了不使一个窗体显示在两个显示器之间等原因的考虑,Windows将一个显示器作为主显示器。启动
计算机时,登录对话框就显示在主显示器中。绝大多数
程序启动示,都会显示在主监视器中。
根据上述介绍,不难发现几个重要的概念:桌面、显示器、主显示器等。首先必须先弄清楚这些概念以及他们之前的关系。这是掌握多显示器应用
程序开发方法的重点。理解了这些概念,其他的部分就非常好理解了。
桌面实际上是指Windows可显示的逻辑区域。实际上是可以将一个窗体显示到桌面之外的。然而这并不是说桌面的所有部分都会显示在某台显示器上(原因如前所述);但反过来说,任何一个显示器显示的内容都必然是桌面的一部分。
桌面是一个矩形区域,可以通过顶点坐标(Top,Left)和宽高来描述桌面的尺寸。为什么还需要顶点坐标呢?因为顶点坐标不是想当然的(0,0)。那么(0,0)在哪里呢?说来话长,还是让我们先来回顾一下刚才提到地一个概念——主显示器吧。Windows希望一般的程序初始的时候显示到主显示器,因为人们习惯于关注一个离自己最近的显示器。而Windows也不可能强制用户把最左边一个显示器作为主显示器,这样一来应用程序为了把自己显示到主显示器,就需要费脑筋的计算。然而,多数用户都只有一个显示器(两个显示器实在太占地方了),而一般的应用程序也不希望大费周章的去计算主显示器在哪里,自己应该显示在什么位置。所以Windows提出了一个合理的解决方案:以主显示器的顶点坐标作为坐标系的原点。这样一来,普通的
程序之需要想在单显示器环境中一样考虑
问题就可以了。
显示器是桌面的局部视图。就好像透过窗户看窗外的风景,站在不同的窗前就可以看到不同的画面。同样的,显示器也是一个矩形区域,同样可以通过顶点坐标(Top,Left)和宽高来描述它的尺寸。顶点坐标是相对于桌面坐标系原点的,也就是相对于主显示器的顶点。
工作区的概念比较简单,它是指显示器中除了任务条和其他停靠在桌面上的窗体之外的矩形区域。
Windows为多显示器应用程序的开发提供了一组API。VCL将这些API封装起来,非常自然的融入整个Framework之中,使得开发多显示器应用
程序变得非常简单。下面就介绍与之相关的内容。
在VCL之中大家最熟悉的恐怕非TCustomForm莫属了,它是所有窗体的基类。TCustomForm的Position属性用来设置窗体的现实位置,其可选值中有两个是值得关心的:一个是poScreenCenter,当Position属性被设置成poScreenCenter时,窗体会显示到主显示器的中央;另一个是poDesktopCenter,当Position属性被设置成poD