如何获得最小化窗口的恢复边界?

Posted

技术标签:

【中文标题】如何获得最小化窗口的恢复边界?【英文标题】:How to get minimized window's RESTORED bounds? 【发布时间】:2010-10-25 21:28:10 【问题描述】:

很容易获得屏幕上所有可见窗口的边界矩形。判断任何窗口是否具有标志性也很容易。

但是对于最小化的窗口,从 User32.GetWindowInfo.rcWindow 报告的 Top 和 Left 为 -32000。我已经查看了整个 API,找不到返回如果单击或切换到窗口将恢复到的边界的调用。

感谢您的任何指点。

【问题讨论】:

【参考方案1】:

查看 User32.GetWindowPlacement

【讨论】:

似乎工作得很好,谢谢...除了一些所有者绘制的窗口,如 WinAmp,它报告其边界为 X=3806,Y=-30000,Width=4081,Height=-29884 任何知道如何获得它的实际界限? 嗯,检查“不可能”的值并调用 GetWindowRect/send WM_NCCALCSIZE 是我想到的唯一解决方案。【参考方案2】:

对于 C/C++:

WINDOWPLACEMENT wp;
::ZeroMemory(&wp, sizeof(WINDOWPLACEMENT));
::GetWindowPlacement(hWnd, &wp);

【讨论】:

以上是关于如何获得最小化窗口的恢复边界?的主要内容,如果未能解决你的问题,请参考以下文章

Qt中窗体总是在最前面,如何取消此状态

PyQt5编程(10):窗口的最小化与最大化

窗口最小化再恢复后恢复 NSProgressIndicator 动画

如何恢复Eclipse左侧窗口?

恢复另一个应用程序的最小化窗口

在 qml 中恢复最小化的无框窗口