监控 Windows 壁纸上的位置
Monitors position on Windows wallpaper
我正在开发 C++ 应用程序来管理 Windows 上多个显示器上的壁纸,就像 UltraMon 和 DisplayFusion 所做的那样,但有更多选项。
一切正常,但会监控放置。
我的桌面是这样排列的三台显示器(忽略N°4)
但是当我查看 UltraMon 生成的墙纸文件时,第三个显示器(小的)没有相同的位置:
通过使用 EnumDisplayMonitors 和 GetMonitorInfo 函数,我得到了这些数据:
0: 1920x1080 at 1920x0
1: 1920x1080 at 0x0 primary
2: 800x480 at -800x-480
符合我的安排,但与墙纸文件不同。
如何知道图像在全局墙纸文件中的位置以使其显示在正确的显示器上?我想 UltraMon 的作者找到了正确的方法,因为它工作得很好。
(我也在UltraMon论坛上问过这个问题)
感谢Raymon Chen 引用的文章,我想通了。
http://blogs.msdn.com/b/oldnewthing/archive/2007/09/24/5083738.aspx
需要知道的两件事:
- 在每个显示器上使用不同壁纸的诀窍是构建 "macro wallpaper" 并使其平铺在桌面上
- 磁贴在主显示器上从 à 0;0 开始
知道了,位于主显示器左侧或顶部的任何显示器都在墙纸的另一块上。
让我们看一下图片:
绿色是实际的桌面,它使用四块墙纸图像(红色)。
现在是时候编写代码了!
我正在开发 C++ 应用程序来管理 Windows 上多个显示器上的壁纸,就像 UltraMon 和 DisplayFusion 所做的那样,但有更多选项。
一切正常,但会监控放置。
我的桌面是这样排列的三台显示器(忽略N°4)
但是当我查看 UltraMon 生成的墙纸文件时,第三个显示器(小的)没有相同的位置:
通过使用 EnumDisplayMonitors 和 GetMonitorInfo 函数,我得到了这些数据:
0: 1920x1080 at 1920x0
1: 1920x1080 at 0x0 primary
2: 800x480 at -800x-480
符合我的安排,但与墙纸文件不同。
如何知道图像在全局墙纸文件中的位置以使其显示在正确的显示器上?我想 UltraMon 的作者找到了正确的方法,因为它工作得很好。
(我也在UltraMon论坛上问过这个问题)
感谢Raymon Chen 引用的文章,我想通了。 http://blogs.msdn.com/b/oldnewthing/archive/2007/09/24/5083738.aspx
需要知道的两件事:
- 在每个显示器上使用不同壁纸的诀窍是构建 "macro wallpaper" 并使其平铺在桌面上
- 磁贴在主显示器上从 à 0;0 开始
知道了,位于主显示器左侧或顶部的任何显示器都在墙纸的另一块上。
让我们看一下图片:
绿色是实际的桌面,它使用四块墙纸图像(红色)。
现在是时候编写代码了!