2015-06-27 61 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

在绿色,我们有实际的桌面,使用墙纸图像的四个区域(红色)。

现在是时候编码了!