注册 登录
编程论坛 VC++/MFC

Win10 获取当前窗口的尺寸不准确

felixliu2008 发布于 2019-03-06 16:21, 2326 次点击
VC2008,使用 VC++ 编程,获取当前活动窗口的尺寸和位置。代码如下,很简单的代码。
HWND hForeground;
hForeground = ::GetForegroundWindow();
::GetWindowRect(hForeground, &m_rect);
在 Win7 下运行正常。但在 Win10 下,尺寸会与实际尺寸有固定的偏差。偏差发生在左、下及右侧,上面没有偏差。
我是使用这个尺寸去截屏的,结果就是出现了下图所示的情况。
只有本站会员才能查看附件,请 登录

如果使用 Alt+PrtScrn 截图,则没有这个问题。
大家帮忙分析下是怎么回事?怎么解决?
1 回复
#2
felixliu20082019-03-06 21:11
在别的论坛找到答案了。解决方法参考如下链接。需要使用 DwmGetWindowAttribute 函数替代 GetWindowRect 函数来获取窗口属性。
https://

另外,在 VS2008 中无法使用 DwmGetWindowAttribute 函数。将项目升级到 VS2012,增加 include <dwmapi.h> 即可正常使用了。

[此贴子已经被作者于2019-3-7 08:41编辑过]

1