亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

在Delphi中開發使用多顯示器的應用程序

2019-11-18 18:22:34
字體:
來源:轉載
供稿:網友

Windows可以將多個顯示器映射為虛擬桌面,使我們可以利用這一點設計出方便工作的應用程序。例如Powerpoint就充分發揮了雙顯示器的優勢(大多數的筆記本電腦都支持),它可以在一個顯示器上播放幻燈片,而在另一個顯示器上顯示備注,可以控制播放的進程,使使用者做商務演說的時候非常等心應手。那么我們怎么開發這種應用程序呢?這篇文章將向你展示如果用Delphi實現使用多顯示器的應用程序。

 

Windows還支持克隆顯示方式,每個顯示器輸出同樣的內容,這對某些應用也是有意義的。還有些顯卡雖然也支持兩個顯示器,不過他們并不是真正意義上的多顯示器,而是虛擬高分辨率顯示模式(如2048×768或者1024×1536),通過顯卡將畫面分別顯示到兩個顯示器上。這兩種顯示模式都不是本文介紹的zhongdian,而且也非常簡單,所以我們也就不再贅述了。

 

Windows最多支持10個顯示器,Windows將所有顯示器映射為一個大的虛擬桌面??梢詫@示器理解為桌面某個局部的視圖。在顯示屬性中可以根據顯示器的物理位置任意排布這些顯示器。如果顯示器的排列不規則,虛擬桌面上的某些部分可能無法顯示在任何一個顯示器上。為了不使一個窗體顯示在兩個顯示器之間等原因的考慮,Windows將一個顯示器作為主顯示器。啟動計算機時,登錄對話框就顯示在主顯示器中。絕大多數程序啟動示,都會顯示在主監視器中。

 

根據上述介紹,不難發現幾個重要的概念:桌面、顯示器、主顯示器等。首先必須先弄清楚這些概念以及他們之前的關系。這是掌握多顯示器應用程序開發方法的重點。理解了這些概念,其他的部分就非常好理解了。

 

桌面實際上是指Windows可顯示的邏輯區域。實際上是可以將一個窗體顯示到桌面之外的。然而這并不是說桌面的所有部分都會顯示在某臺顯示器上(原因如前所述);但反過來說,任何一個顯示器顯示的內容都必然是桌面的一部分。

 

桌面是一個矩形區域,可以通過頂點坐標(Top,Left)和寬高來描述桌面的尺寸。為什么還需要頂點坐標呢?因為頂點坐標不是想當然的(0,0)。那么(0,0)在哪里呢?說來話長,還是讓我們先來回顧一下剛才提到地一個概念——主顯示器吧。Windows希望一般的程序初始的時候顯示到主顯示器,因為人們習慣于關注一個離自己最近的顯示器。而Windows也不可能強制用戶把最左邊一個顯示器作為主顯示器,這樣一來應用程序為了把自己顯示到主顯示器,就需要費腦筋的計算。然而,多數用戶都只有一個顯示器(兩個顯示器實在太占地方了),而一般的應用程序也不希望大費周章的去計算主顯示器在哪里,自己應該顯示在什么位置。所以Windows提出了一個合理的解決方案:以主顯示器的頂點坐標作為坐標系的原點。這樣一來,普通的程序之需要想在單顯示器環境中一樣考慮問題就可以了。

 

顯示器是桌面的局部視圖。就好像透過窗戶看窗外的風景,站在不同的窗前就可以看到不同的畫面。同樣的,顯示器也是一個矩形區域,同樣可以通過頂點坐標(TopLeft)和寬高來描述它的尺寸。頂點坐標是相對于桌面坐標系原點的,也就是相對于主顯示器的頂點。

 

工作區的概念比較簡單,它是指顯示器中除了任務條和其他??吭谧烂嫔系拇绑w之外的矩形區域。

 

Windows為多顯示器應用程序的開發提供了一組APIVCL將這些API封裝起來,非常自然的融入整個Framework之中,使得開發多顯示器應用程序變得非常簡單。下面就介紹與之相關的內容。

 

VCL之中大家最熟悉的恐怕非TCustomForm莫屬了,它是所有窗體的基類。TCustomFormPosition屬性用來設置窗體的現實位置,其可選值中有兩個是值得關心的:一個是poScreenCenter,當Position屬性被設置成poScreenCenter時,窗體會顯示到主顯示器的中央;另一個是poDesktopCenter,當Position屬性被設置成poDesktopCenter時,窗體顯示在整個桌面的中央。如果把這個屬性設成poDesktopCenter,程序又運行在一個有多臺顯示器的系統上,那么這個窗口就會顯示在兩個顯示器之間,會給用戶帶來不必要的麻煩。因此即使我們的程序不是針對多顯示器而設計的,也應該細心處理這個值。另外一個屬性是DefaultMonitor,它的作用與Position有些類似,決定窗口最初顯示在哪個顯示器內。它有四個備選值:dmDesktop,dmPRimarydmMainFormdmActiveForm。他們的含義如下:

 

Value

Meaning

dmDesktop

不特別處理

dmPrimary

將窗體顯示到第一個顯示器上。這又是一個陷阱,字面上理解是主顯示器,而事實上它是指Screen.Monitor[0]這個顯示器。

dmMainForm

將窗體顯示到主窗體所在的顯示器

dmActiveForm

將窗體顯示到桌面上活動窗體所在的顯示器

 

TCustomForm還有一個只讀的共有屬性(沒有PublishedMonitor,它提供了訪問窗體所在顯示器實例的引用,這個值與DefaultMonitor是有緊密的關聯的。

那么怎么在使窗體在不同的顯示器之間移動呢?這并不困難,估計你也想到了。這里介紹兩種方法:

第一,   可以設置TCustomFormTopLeft使窗體顯示在桌面的任意位置。正如前面所述,桌面是由所有顯示器組成的。它們有共同的坐標系,所以可以根據顯示器的邏輯位置決定窗體的位置?,F在的問題是如何獲得每個顯示器的邏輯位置和尺寸,后面就會介紹。

第二,   可以調用TCustomFormMakeFullyVisible方法將窗體完全顯示到指定的顯示器之中。可以通過這個方法避免窗口在兩個顯示器上各顯示一部分。

 

剛才我們提出了一個問題:如何獲得每個顯示器的邏輯位置和尺寸。為了解答這個問題,需要再介紹連個類:TScreenTMonitor。

 

TScreen描述與顯示設備有關的一些信息,我們主要關心與顯示器邏輯位置和尺寸有關的信息。其他方面的內容可以在Delphi的文檔中獲知。在程序運行的時候VCL自動創建一個TScreen的實例——全局變量,所以通常情況下程序是不需要實例化TScreen的。

 

TScreen有一組形如Desktop*的屬性,這些屬性描述了整個桌面的尺寸和各頂點坐標。還有對開發多顯示器應用程序有重要意義的連個屬性:MonitorCountMonitors。通過這兩個屬性我們可以枚舉出系統中所有的顯示器(TMonitor)的實例,每個實例都反映了相應顯示器的相對位置和分辨率等信息(后文會詳細說明)。

TScreen的眾多屬性之中,我們會找到HeightWidth這兩個屬性。要特別警惕它們不是指整個桌面的尺寸,而是指主顯示器的高度和寬度。這非常容易讓人產生錯覺,無以為是整個桌面的尺寸。與之類似的還有形如WorkArea*的一組屬性,它們描述了主顯示器的工作區域的尺寸和各頂點坐標。是不是覺得少了什么?為什么沒有獲取主顯示器相對位置的屬性?原因就像前面所說的:Windows是以主顯示器的左上角為坐標系原點的,所以主顯示器的相對位置必然是(0,0)。

除了這些屬性之外,還要介紹TScreen的三個成員函數:MonitorFromPointMonitorFromRectMonitorFromWindow。顧名思義,他們分別是獲取個坐標、某個區域和某個窗口所在的顯示器的實例。在實際的開發中可能也會用到。

 

最好,再來看看TMonitor類。它封裝了物理顯示器的有關屬性——這些屬性都是只讀的。下表簡單介紹了這些屬性的含義,它們對編寫多顯示器應用程序非常有用:

屬性

說明

Handle

獲取該顯示器的Windows句柄

MonitorNum

獲取顯示器的編號

Primary

獲取該顯示器是否是主顯示器。又且僅有一個顯示器的PrimaryTrue

Top

獲取顯示器的上邊界

Left

獲取顯示器的左邊界

Height

獲取顯示器的高度

Width

獲取顯示器的寬度

BoundsRect

獲取顯示器的對應桌面的區域,它與上面四個屬性是等價的

WorkareaRect

獲取顯示器的工作區對應桌面的區域。

 

清楚地了解了TScreenTMonitor之后,前面的問題也就自然解決了。到這里,本文已經介紹了開發多顯示器應用程序所需的全部知識。相信你可以利用這些知識開發出非常實用的軟件產品。

 

附:你可以下載一個DEMO,幫助理解本文。


上一篇:Delphi下用WindowsAPI創建窗體

下一篇:delphi連接數據庫淺談

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美疯狂性受xxxxx另类| 国产美女精彩久久| 成人网页在线免费观看| 97国产精品视频| 欧美国产高跟鞋裸体秀xxxhd| 亚洲欧美综合区自拍另类| 欧美多人爱爱视频网站| 精品人伦一区二区三区蜜桃免费| 亚洲精品视频网上网址在线观看| 日韩av色综合| 亚洲精品国产精品国产自| 亚洲精品免费网站| 亚洲成在人线av| 91国内揄拍国内精品对白| 激情懂色av一区av二区av| 欧美黄色片视频| 欧美日本啪啪无遮挡网站| 欧美激情xxxxx| 中文字幕综合在线| 国产精品视频内| 亚洲午夜色婷婷在线| 亚洲欧美国产精品久久久久久久| 亚洲一级免费视频| 一区二区国产精品视频| 亚洲精品福利在线| 国内精品久久久久影院 日本资源| 欧美日韩国产在线| 欧美二区乱c黑人| 另类专区欧美制服同性| 九九精品在线观看| 另类图片亚洲另类| 91大神福利视频在线| 亚洲黄页网在线观看| 日韩国产在线看| 亚洲一区二区精品| 国产一区玩具在线观看| 国产成人aa精品一区在线播放| 欧美性xxxxx| 国产精品91一区| 亚洲黄在线观看| 色黄久久久久久| 亚洲欧美日韩久久久久久| 欧美性xxxxxx| 国产欧美韩国高清| 久久中文字幕在线| 成人黄色生活片| 国产自产女人91一区在线观看| 亚洲a成v人在线观看| 亚洲黄色av女优在线观看| 国产精品极品美女在线观看免费| 亚洲午夜精品久久久久久性色| 国语自产在线不卡| 亚洲第一精品夜夜躁人人躁| 日韩精品免费在线视频观看| 日韩免费在线播放| 国产精品日日摸夜夜添夜夜av| 亚洲三级黄色在线观看| 久久国产视频网站| 国产男人精品视频| 日韩电影网在线| 中文字幕亚洲色图| 国产成人精品最新| 国产午夜精品全部视频在线播放| 91极品视频在线| 国语自产偷拍精品视频偷| 91免费综合在线| 精品久久久久久亚洲国产300| 热久久这里只有精品| 91久久国产精品91久久性色| 亚洲精品国产精品国自产观看浪潮| 91精品国产亚洲| 国产成人精品久久| 亚洲精品国偷自产在线99热| 欧美激情精品久久久久久黑人| 97久久伊人激情网| 日韩福利伦理影院免费| 午夜剧场成人观在线视频免费观看| 久久久国产一区二区三区| 精品久久久精品| 日韩中文字幕免费视频| 欧美在线观看网站| 亚洲精品wwww| 成人性生交大片免费看视频直播| 日韩av色在线| 日本欧美一级片| 国产精品久久999| 亚洲网站在线播放| 亚洲xxx自由成熟| 992tv成人免费影院| 国产一区二区色| 欧美激情一区二区三区在线视频观看| 亚洲国产精品久久精品怡红院| 色琪琪综合男人的天堂aⅴ视频| 欧美午夜丰满在线18影院| 日韩精品免费综合视频在线播放| 成人午夜在线观看| 欧美激情免费在线| 亚洲人成亚洲人成在线观看| 在线精品91av| 国产福利视频一区二区| 伊人av综合网| 日韩一区二区三区在线播放| 成人激情在线播放| 韩国国内大量揄拍精品视频| 国产精品视频99| 亚洲精品一区av在线播放| 国产精品视频xxx| 日韩小视频在线观看| 精品小视频在线| 成人xxxxx| 91精品免费看| 91精品国产自产在线老师啪| 久久久亚洲精品视频| 成人午夜在线视频一区| 亚洲国产91精品在线观看| 97色在线视频| 国产欧美一区二区三区在线| 精品视频在线播放色网色视频| 日韩在线观看免费网站| 国产成人拍精品视频午夜网站| 中文字幕欧美精品日韩中文字幕| 国产成人自拍视频在线观看| 日韩大陆毛片av| 国产精品久久久久久久久粉嫩av| 不卡在线观看电视剧完整版| 亚洲影视九九影院在线观看| 精品国产网站地址| 亚洲第一页在线| 亚洲欧洲日产国码av系列天堂| 自拍偷拍亚洲欧美| 动漫精品一区二区| 欧美孕妇毛茸茸xxxx| 狠狠躁夜夜躁人人爽天天天天97| 欧美视频13p| 1769国产精品| 国产精品一区二区三区毛片淫片| 亚洲国产日韩欧美综合久久| 欧美噜噜久久久xxx| 欧美理论电影在线观看| 欧美激情精品久久久久| 国产啪精品视频| 亚洲精品欧美日韩专区| 欧美精品少妇videofree| 久久久久国产精品免费网站| 国产精品美女网站| 欧美大片在线看免费观看| 国产精品久久久久久久一区探花| 国产精品久久综合av爱欲tv| 亚洲成av人片在线观看香蕉| 九九热这里只有在线精品视| 欧美性视频网站| 日韩av在线不卡| 日韩在线中文字| 亚洲精品一区二区网址| 九九久久综合网站| 欧美激情视频网址| 日韩国产中文字幕| 国产精品福利在线观看网址| 欧美激情xxxx| 久久久午夜视频| 国产成人福利夜色影视| 久久免费视频网站| 亚洲成av人乱码色午夜| 欧美不卡视频一区发布|