2

我一直在努力使用 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),但这并不准确。我目前没有其他显示器可用,请检查。任何人都知道它应该是什么,或者这只是我特定设置的人工制品?

(注意:这些是有限制的——它们不适用于 Left 或 Width 的所有值)

4

1 回答 1

2

这种行为似乎与MonitorFromWindow的行为一致。从文档中:

MonitorFromWindow 函数检索与指定窗口的边界矩形相交面积最大的显示监视器的句柄。

检查这是否与您的计算一致。它应该是。

于 2012-03-22T14:11:58.863 回答