微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WinApi中的GetClientRect和GetWindowRect有什么区别?

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

无法删除由Windows上的`tempfile.mkstemp()`创build的文件

如何在使用正则expression式Windows csv时保留换行符

Haskell IDE for Windows?

在C中增加控制台窗口

免费的打印机打印到PNG(或SVG)

窗口rect包括非客户区域,即窗口边框,标题栏等。客户端矩阵不。

GetwindowRect在屏幕坐标中返回一个矩形,而GetClientRect在客户坐标中返回一个矩形。

InvalidateRect在客户端坐标中接收一个矩形。 如果您想使整个客户区域无效,则将NULL传递给InvalidateRect 。 你可以传递GetClientRect返回的rect,但是传递NULL更简单,更清晰。

GetClientRect获取窗口客户区的坐标。 具体来说,这是窗口区域的区域,并排除标题等MSDN页面上的一个评论总结得很好:

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

GetwindowsRect获取整个窗口的坐标。 这包括标题,状态栏等。但根据MSDN页面上的评论

Vista下没有与WINVER = 6链接的应用程序将在这里收到一组令人误解的值,这些值并不包含“玻璃”像素的额外填充。Vista Aero应用于窗口。

所以,除非这个问题已经被修复,否则请检查你得到的结果,并确保你有正确的WINVER值。

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

请注意GetwindowRect()在屏幕坐标中返回一个矩形 – 相对于屏幕/显示器的坐标。 GetClientRect()返回一个相对于自身的矩形。

来自MSDN:

GetwindowRect

检索指定窗口的边界矩形的尺寸。 尺寸在相对于屏幕左上角的屏幕坐标中给出。

GetClientRect

检索窗口客户区域的坐标。 客户端坐标指定客户区的左上角和右下角。 由于客户端坐标相对于窗口客户区的左上角,所以左上角的坐标是(0,0)。

更多 :客户端矩形不包括标题栏,边框,滚动条,状态栏…

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐