Windows 检索最大化最小化窗口的窗口位置

Windows 检索最大化最小化窗口的窗口位置,windows,winapi,Windows,Winapi,考虑这种情况: 在多监视器系统上 应用程序被最大化,然后最小化 在我的应用程序中,我有上述应用程序主窗口的HWND 现在,如何确定从最小化状态恢复时窗口将显示在哪个监视器上?GetWindowRect和GetWindowInfo的结果为负值,所有监视器的结果显然相同。GetWindowPlacement在rcNormalPosition中提供了良好的值,但这些是应用程序在未最大化时返回的坐标,可以部分或全部在另一个监视器上。尝试使用rcNormalPosition和monitor\u DEF

考虑这种情况:

  • 在多监视器系统上
  • 应用程序被最大化,然后最小化
  • 在我的应用程序中,我有上述应用程序主窗口的HWND

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

尝试使用
rcNormalPosition
monitor\u DEFAULTTONEAREST
标志的
MonitorFromRect
函数。然后-调用
GetMonitorInfo
来确定工作监视器区域。

我从未尝试过这个,但没有
WINDOWPLACEMENT.ptMaxPosition
给你答案?不,那些值与我从GetWindowRect和GetWindowInfo负值中得到的值相同,并不意味着它们是错误的值。虚拟桌面包含坐标值为负值的点。如果应用程序在任一显示器上,负值不同,我会尝试理解它们。因为它们在两个监视器上都是相同的,我想我无法找到我在那里搜索的内容。rcNormalPosition(窗口在取消最小化时所采用的坐标)仍有可能位于当前最大化到的监视器之外的另一个监视器上,但默认情况下,在窗口大部分打开时,它应该最大化到监视器上,所以我接受这个答案。