-
WM_PAINT 与 WM_ERASEBKGND消息的深入分析
- 当WM_PAINT消息不是由函数InvalidateRect产生的时(即通过最大话,最小化,移动,下拉菜单等),系统会先产生连续产生若干个WM_ERASEBKGND消息,紧接着在产生WM_PAINT消息。
如果程序没有自己处理WM_ERASEBKGND消息则默认由函数DefWindowProc函数处理(此函数使用在注册窗口类时使用的画刷擦除无效区域wndclass.hbrBackground
)函数返回FLASE,如果程序自己处理WM_ERASEBKGND消息则返回TRUE。
紧接着程序处理WM_PAINT消息,函数BeginPaint的参数PAINTSTRUCT结构(绘制信息结构)的fErase字段的值取决于WM_ERASEBKGND消息的返回,如果此消息返回FLASE,则fErase字段的值TRUE,否则为Flase。(函数BeginPaint会使无效区域变得有效)
- 当WM_PAINT消息是由InvalidateRect函数产生的时候,如果函数的bErase参数为TRUE,则BeginPaint函数察觉需要擦除背景则发送一个WM_ERASEBKGND消息(后面处理和1一样),如果为FLASE则不发送WM_ERASEBKGND消息。
总结:如果说WM_ERASEBKGND消息是由BeginPaint函数产生的是不对的(得分情况处理)
-
相关阅读:
进程间通讯,线程间通讯
进程与线程
学习自测6.0
学习自测5.0
学习自测4.0
学习自测3.0
学习自测2.0
学习自测1.0
PS中怎么复制某个图层的效果?
初学前端犯下的错误(用于反省)
-
原文地址:https://www.cnblogs.com/revercc/p/13287088.html
Copyright © 2020-2023
润新知