如何判断窗口是否使用Aero Snap 功能调整大小?
例如,它给出了
请注意,
我需要在程序退出时保存窗口状态,并在启动时加载它,因此我需要知道窗口的实际位置。如何找到实际的窗口坐标?
嗯,我用
GetWindowPlacement
函数返回最新的“恢复”窗口大小。我将其用于以下方式:WINDOWPLACEMENT wp = {};
wp.length = sizeof(WINDOWPLACEMENT);
::GetWindowPlacement( hWnd, &wp );
例如,它给出了
wp.rcNormalPosition = {top=208 bottom=520 left=152 right=510}
,但实际上应该是 {top=0 bottom=1920 left=152 right=510}
。请注意,
GetWindowRect
(获取窗口大小和位置)提供完全相同的错误结果。那是我的错,GetWindowRect
提供正确的结果。我需要在程序退出时保存窗口状态,并在启动时加载它,因此我需要知道窗口的实际位置。如何找到实际的窗口坐标?
嗯,我用
notepad.exe
(以及其他一些标准的 Windows 组件)进行了几次测试,它以相同的方式保存其状态,不记得它是否被“吸附”。因此,我认为这是 Windows 程序的意图行为。
GetClientRect
是什么意思?如果客户端大小大于窗口大小,那就说明有问题了。DWMWA_EXTENDED_FRAME_BOUNDS
又是什么呢?在GetWindowRect
的注释中提到它有助于获取 Aero 窗口的边界。 - Ben Voigt