2015-06-27 60 views
0

我正在使用C++應用程序來管理Windows上的多個顯示器上的壁紙,比如UltraMon和DisplayFusion做的更多選項。監視器在Windows上的位置

Everthing運行良好,但監視位置。

我的臺式機具有佈置這樣的三個監視器(忽略N°4) enter image description here

但是,當我看通過的UltraMon,所述THRID監視器(小的一個)產生的壁紙文件不具有相同的位置: enter image description here

通過使用EnumDisplayMonitors和GetMonitorInfo功能我得到這些數據:

0: 1920x1080 at 1920x0 
1: 1920x1080 at 0x0 primary 
2: 800x480 at -800x-480 

這相當於我arrang但與壁紙文件不同。

如何知道將圖像放在全局壁紙文件中的哪個位置將其顯示在正確的顯示器上?我猜UltraMon的作者找到了正確的方法,因爲它完美地工作。

(我在UltraMon論壇上也提過這個問題)。

+1

推測壁紙圖像必須從邏輯座標0x0開始(即與主監視器的壁紙),然後環繞。 –

+0

http://blogs.msdn.com/b/oldnewthing/archive/2007/09/24/5083738.aspx –

+0

@RaymondChen我想我明白了,編碼會有點棘手:) – Mistic

回答

2

感謝Raymon Chen引用的文章,我想通了。 http://blogs.msdn.com/b/oldnewthing/archive/2007/09/24/5083738.aspx

兩件事情知道:

  1. 每臺顯示器上具有不同的牆紙,關鍵是要建立一個「宏觀壁紙」,並使其平鋪翻過桌面
  2. 瓷磚開頭的0; 0在主顯示器上

瞭解到,任何位於主顯示器左側或頂部的顯示器都位於牆紙的另一個圖塊上。

讓我們來看看它在圖像: enter image description here

在綠色,我們有實際的桌面,使用牆紙圖像的四個區域(紅色)。

現在是時候編碼了!