Winapi 什么决定了窗口何时在附加监视器上最大化?

Winapi 什么决定了窗口何时在附加监视器上最大化?,winapi,positioning,silverlight-5.0,maximize-window,Winapi,Positioning,Silverlight 5.0,Maximize Window,我一直致力于使用p/Invoke(post-to-follow)实现Silverlight 5的多监视器支持。在玩的时候,我注意到窗口的大小和位置将决定我的两个显示器中的哪一个增加了一个窗口。我继续玩(和你一样),并决定: 左边是我的笔记本电脑(1280 x 800),右边是显示器(1024 x 768),公式是左=-(宽度/2)+1271 左边是我的显示器(1024x768),右边是笔记本电脑(1280x800),公式是左=-(宽度/2)+1014 我的显示器(1024 x 768)在左边,

我一直致力于使用p/Invoke(post-to-follow)实现Silverlight 5的多监视器支持。在玩的时候,我注意到窗口的大小和位置将决定我的两个显示器中的哪一个增加了一个窗口。我继续玩(和你一样),并决定:

  • 左边是我的笔记本电脑(1280 x 800),右边是显示器(1024 x 768),公式是左=-(宽度/2)+1271
  • 左边是我的显示器(1024x768),右边是笔记本电脑(1280x800),公式是左=-(宽度/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值)

此行为似乎与的行为一致。从文件中:

MonitorFromWindow函数检索与指定窗口的边框具有最大相交面积的显示监视器的句柄


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

很接近,但不完全如此,除非描述缺少一些细节。如果是这种情况,则将窗口推到第二个监视器(在RHS上)上的Left和Width值应给出(Width/2)+Left=(RHS监视器的第一个像素),例如,左侧(主)监视器的宽度为1280,宽度为400,左侧为1080,因为像素编号为0-1279,所以1280是第一个),但实际上它们给出的值为((RHS监视器的第一个像素)-10)或1270。类似地(但不完全是10)用于其他主要/次要监视器位置。