码迷,mamicode.com
首页 > 其他好文 > 详细

WM_PAINT 与 WM_ERASEBKGND(三种情况,比较清楚)

时间:2016-02-26 23:29:22      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

一直对这两个消息的关系不是太了解,借重新深刻学习windows编程的机会研究一番。

当窗口从无效变为有效时,比方将部分覆盖的窗口恢复时会重绘窗口时:1)程序首先会通过发送其他消息调用DefWindowProc,它内部会发送WM_ERASEBKGND消息,然后才会发送WM_PAINT消息,而且不经过消息队列。2)诸如UpdateWindow也会先调用WM_ERASEBKGND消息的处理过程,然后才会调用WM_PAINT消息的处理过程。3)当调用InvalidateRect时(三个参数:hWnd,RECT,bErase),如果bErase参数为TRUE时会先调用WM_ERASEBKGND消息的处理过程。为False时,只会发送WM_PAINT消息到队列。所以InvalidateRect不是立刻调用WM_PAINT消息的处理过程,他只是给程序窗口增加一个更新区域(参阅MSDN)。

另外关于WM_ERASEBKGND处理函数的返回值,如果处理WM_ERASEBKGND消息时返回FALSE,BeginPaint标记pt.fErase为TRUE, 如果处理WM_ERASEBKGND时返回TRUE,BeginPaint标记pt.fErase为FALSE.

如果pt.fErase标记为TRUE,指示应用程序应该处理背景,但是应用程序不一定需要处理,pt.fErase只是作为一个标记。

http://www.aichengxu.com/view/2426114

WM_PAINT 与 WM_ERASEBKGND(三种情况,比较清楚)

标签:

原文地址:http://www.cnblogs.com/findumars/p/5221931.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!