我正在尝试生成一个位图,其中包含将窗口恢复到桌面时显示的内容。 GetWindowRect返回它的最小化大小,GetWindowplacement返回它的去向。但是我找不到能告诉我它有多大的api。
如何确定恢复时窗口的大小?
答案 0 :(得分:4)
GetWindowPlacement
告诉你窗口究竟有多大。 rcNormalPosition
字段是RECT
,为您提供尺寸。获得高度和宽度,从底部向左减去顶部,从右边减去。
注意MSDN关于矩形在工作空间坐标中的注释,而不是屏幕坐标:
工作区坐标与屏幕坐标的不同之处在于它们考虑了应用工具栏(包括任务栏)的位置和大小。工作区坐标(0,0)是工作区区域的左上角,应用程序工具栏未使用屏幕区域。
答案 1 :(得分:4)
GetWindowPlacement
确实是你想要的。使用rcNormalPosition
RECT
,其中包含标准化位置的坐标。或者,如果WPF_RESTORETOMAXIMIZED
位于窗口放置flags
中,则使用与窗口关联的监视器的工作区。
话虽如此,GetWindowPlacement
有时会在Windows 7的rcNormalPosition
中返回误导性信息。当您使用半屏Aero快照功能时,我会遇到这种情况。执行此操作后,如果在您提出问题时窗口仍处于规范状态,您会发现GetWindowPlacement
rcNormalPosition
返回{A} RECT
与Aero捕捉位置不匹配。如果窗口规范化,只需使用GetWindowRect
即可处理。