2012-07-20 219 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