我一直致力于使用 P/Invoke(后续文章)通过 Silverlight 5 实现多显示器支持。在玩游戏时,我注意到窗口大小和位置将决定附加窗口最大化到我的两个显示器中的哪一个。我继续玩(就像你一样)并确定:
- 我的笔记本电脑 (1280 x 800) 位于左侧作为主设备,显示器 (1024 x 768) 位于右侧,则公式为 Left = -(Width/2) + 1271
- 我的显示器 (1024 x 768) 位于左侧作为主显示器,笔记本电脑 (1280 x 800) 位于右侧,则公式为 Left = -(Width/2) + 1014
- 我的显示器 (1024 x 768) 位于左侧,笔记本电脑 (1280 x 800) 位于右侧作为主要显示器,公式为 Left = -(Width/2) - 11
- 以左侧的笔记本电脑 (1280 x 800) 和右侧的显示器 (1024 x 768) 作为主要设备,公式为 Left = -(Width/2) - 10
看起来应该有一个模式(左边的主元素常量 = 屏幕宽度 - 10,右边的主元素常量 = -10),但它并不准确。我目前没有其他可用的监视器来检查。有人知道它应该是什么,或者这是否只是我特定设置的产物?
(注意:这些有限制 - 它们不适用于“左”或“宽度”的所有值)
最佳答案
此行为似乎与 MonitorFromWindow 的行为一致。来自文档:
The MonitorFromWindow function retrieves a handle to the display monitor that has the largest area of intersection with the bounding rectangle of a specified window.
检查这是否与您的计算一致。应该是这样。
关于winapi - 什么决定了窗口何时最大化到附加监视器上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9748403/