Invalidate(FALSE)表示什么
Invalidate(false)表示不擦除背景,直接画。
Invalidate标记一个需要重绘的无效区域,并不意味着调用该函数后就立刻进行重绘。类似于PostMessage(WM_PAINT),需要处理到WM_PAINT消息时才真正重绘。以为您Invalidate之后还有其他的语句正在执行,
程序没有机会去处理WM_PAINT消息,但当函数执行完毕后,消息处理才得以进行。Invalidate只是放一个WM_PAINT消息在队列里,不做别的,所以只有当当前函数返回后,进入消息循环,取出WM_PAINT,才执行PAINT,所以不管Invalidate放哪里,都是最后的。
扩展资料
Invalidate(FALSE)与Invalidate(TRUE)区别
使用Invalidate(FALSE)函数时,它只会向消息队列中添加了WM_PAINT消息。
使用Invalidate(TRUE)函数时,它会向消息队列中添加了WM_ERASEBKGND和WM_PAINT两个消息。
WM_ERASEBKGND消息的作用以背景色填充客户区,因此他会将之前绘制的图像情况,然后响应WM_PAINT消息后,会调用OnPaint函数,进行响应图像绘制工作。故Invalidate(TRUE)相当于将原来画的内容清空后,重新绘制。
广告 您可能关注的内容 |