2012-07-20 217 views
1

考虑这种情况:获取最大化最小化窗口的窗口位置

  • 多显示器系统上,
  • 一个应用程序最大化,然后最小化,
  • 在我的应用我有没有这HWND以上应用程序的主窗口

现在,如何确定从最小化状态恢复时窗口将显示哪个监视器? GetWindowRect和GetWindowInfo结果为负值,显然对所有显示器都是一样的。 GetWindowPlacement在rcNormalPosition中给出了很好的值,但是这些是应用程序在未最大化时返回的坐标,可能部分或全部位于另一个显示器上。

+1

我从来没有试过这个,但'WINDOWPLACEMENT.ptMaxPosition'给你答案? – arx 2012-07-20 22:59:51

+0

不是,那些持有从GetWindowRect和GetWindowInfo获得的相同负值 – 2012-07-21 11:19:02

+0

负值并不意味着它们是错误*值。虚拟桌面包含具有负值坐标值的点。 – 2012-07-22 07:00:53

回答

2

尝试MonitorFromRect功能与rcNormalPositionMONITOR_DEFAULTTONEAREST标志。之后 - 致电GetMonitorInfo确定工作监控区域。

+0

仍然有机会rcNormalPosition(非最小化时窗口的坐标)在另一个监视器上,而不是当前最大化的那个监视器上,但默认情况下它应该已经最大化到监视器上,大部分窗口处于打开状态,所以我我会接受这个答案。 – 2012-07-22 19:00:22