首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在WinApi中,GetClientRect和GetWindowRect有什么不同?

在WinApi中,GetClientRect和GetWindowRect有什么不同?
EN

Stack Overflow用户
提问于 2011-09-27 04:41:27
回答 4查看 37.1K关注 0票数 31

我应该在InvalidateRect中使用哪些选项来刷新我的窗口?为什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-09-27 04:44:24

窗口rect包括非工作区,即窗口边框、标题栏等。客户端rect不包括。

GetWindowRect返回屏幕坐标中的矩形,而GetClientRect返回客户端坐标中的矩形。

InvalidateRect接收客户端坐标中的rect。如果您想使整个工作区无效,则将NULL传递给InvalidateRect。您可以传入由GetClientRect返回的rect,但是传递NULL要简单明了得多。

票数 51
EN

Stack Overflow用户

发布于 2011-09-27 04:53:50

一个非常简单的解释是,GetWindowRect()为您提供了包含窗口边框的矩形。GetClientRect()为您提供了排除边框的矩形-分配给窗口特定图形的区域。

请注意,GetWindowRect()返回屏幕坐标中的矩形-相对于屏幕/监视器的坐标。GetClientRect()返回一个相对于自身的矩形。

票数 15
EN

Stack Overflow用户

发布于 2011-09-27 04:45:37

GetClientRect获取窗口工作区的坐标。具体地说,这是内部的区域,窗口chrome和排除了,标题等。the MSDN page上的一条评论很好地总结了这一点:

,我想说这个函数返回我可以渲染的区域的大小。

GetWindowsRect获取整个窗口的坐标。此包括标题,状态栏等。然而,根据the MSDN page上的评论

在Vista下没有与WINVER=6链接的

应用程序将在这里收到一组误导性的值,这些值没有考虑到Vista Aero应用于窗口的“玻璃”像素的额外填充。

因此,除非Windows7已经修复了这个问题,否则请仔细检查您得到的结果,并确保WINVER的值是正确的。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7561049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档