我应该在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] 举报,一经查实,本站将立刻删除。