对InvalidateRect函数和ValidateRect函数的认识

     之前就经常碰到这两个函数,但是一直闹不清楚有啥子用法,今天看《windows程序设计》时发现讲到这部分内容,在这里总结一下。

     首先要有个客户区的概念,书上是这么定义的:客户区是指整个应用程序窗口中没有被标题栏、边框、菜单栏、工具栏、状态栏和滚动条占用的区域。客户区免不了绘制和重绘,这里就又蹦出两个概念:有效区和无效区,其中需要重新绘制的部分被称作无效区,如果客户区有了无效区域,结果就是windows会在应用程序的消息队列中放置一条WM_PAINT的消息,如果窗口处理过程在处理一条WM_PAINT消息之前,客户区的另外一部分也是小了,windows会计算出覆盖这两块区域的一个新的矩形,并且更新绘制信息结构中的数据,而不会在消息队列中放置对个WM_PAINT消息。

     那么通过调用InvalidateRect函数来强制使客户区的一个矩阵失效,引起windows进行上述的一些过程,也可以调用ValidateRect函数来使客户区的任意矩形变得有效,如果调用了ValidateRect函数后,整个客户区都有效了,消息队列中的WM_PAINT消息就会被删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值