WM_PAINT与WM_ERASEBKGND
来源:互联网 发布:2016第二季度经济数据 编辑:程序博客网 时间:2024/05/17 20:13
http://blog.sina.com.cn/s/blog_5344089201009whk.html
WM_paint详解
http://blog.sina.com.cn 2007年02月15日17:43 7456wg标签:
WM_PAINT是Windows窗口系统中一条重要的消息,
应
http://blog.163.com/wangpf2008@126/blog/static/351551192007915784249/
WM_PAINT与WM_ERASEBKGND
2007-10-15 19:08:42| 分类:IT相关 | 标签:|字号大中小订阅
InvalidateRect和UpdateWindow的区别
InvalidateRect是将客户区标记为无效,并产生WM_PAINT消息,Windows会将WM_PAINT消息放入队列,等待窗口过程的处理,然后操作系统将WM_PAINT当作是低优先级消息,如果后面有其他的动作要处理,则可能会出现空白的区域需要等待一段时间才被刷新。
UpdateWindow则将导致操作系统立即用WM_PAINT调用窗口过程,而不进入队列,使窗口得到立即的刷新。窗口过程完成刷新后立即退出,Windows将控制返回给UpdateWindow之后的语句。
WM_PAINT与WM_ERASEBKGND
当WM_PAINT不是由InvalidateRect产生时,即由最大化,最小化等产生时,或者移动产生(移动有时只会产生WM_ERASEBKGND消息)系统先发送WM_ERASEBKGND消息,再发送WM_PAINT消息.
如果处理WM_ERASEBKGND消息时返回FALSE,BeginPaint标记pt.fErase 为TRUE,如果处理WM_ERASEBKGND时返回TRUE,BeginPaint标记pt.fErase为FALSE.
当WM_PAINT由InvalidateRect产生时,先发送WM_PAINT消息(异步),如果InvalidateRect的bErase为TRUE,BeginPaint检查到更新区域需要删除背景,向窗口发送一个WM_ERASEBKGND消息,如果处理WM_ERASEBKGND消息时返回FALSE,BeginPaint标记pt.fErase 为TRUE,如果处理WM_ERASEBKGND时返回TRUE,BeginPaint标记pt.fErase为FALSE.
如果pt.fErase标记为TRUE,指示应用程序应该处理背景,但是应用程序不一定需要处理,pt.fErase只是作为一个标记.
补充:DefWindowProc(hWnd, message, wParam, lParam)处理WM_ERASEBKGND消息时默认用下面的画刷清除背景
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
WM_ERASEBKGND返回TRUE和返回FALSE是一个规范,一般情况下没有什么区别,但是如果什么时候用到了,会根据函数返回值判断后续处理。因此最好按照要求返回数据
1:UpdateWindow只是发送一个WM_PAINT消息给窗口。如果你的窗口没有设置无效区域的话,UpdateWindow就没有作用。
2:InvalidateRec也只是把窗口中的某个区域设置成一个无效区域。这个区域要等到窗口下一次接收到WM_PAINT消息的时候才会被重画。
如果你想立即更新某一个窗口区域,可以依次调用InvalidateRect和UpdateWindow
- WM_PAINT与WM_ERASEBKGND
- WM_PAINT与WM_ERASEBKGND补充
- WM_PAINT与WM_ERASEBKGND
- WM_PAINT与WM_ERASEBKGND
- WM_PAINT与WM_ERASEBKGND
- WM_PAINT 与 WM_ERASEBKGND
- WM_PAINT与WM_ERASEBKGND
- WM_PAINT与WM_ERASEBKGND补充
- WM_PAINT WM_ERASEBKGND
- WM_PAINT和WM_ERASEBKGND區別
- WM_CTLCOLOR,WM_ERASEBKGND,WM_PAINT联系
- WM_PAINT详解和WM_ERASEBKGND
- WM_PAINT, WM_NCPAINT, WM_ERASEBKGND的关系
- 关于OnPaint, OnEraseBkGnd, WM_PAINT,WM_ERASEBKGND
- WINCE MFC 自绘控件的WM_PAINT与WM_ERASEBKGND、WM_TIMER 问题总结
- WM_PAINT、WM_ERASEBKGND、InvalidateRect、Invalidate之间的关系
- 3.VC(custom)-WM_PAINT和WM_ERASEBKGND
- WM_PAINT 和 WM_ERASEBKGND 消息的区别
- Linux bash Shell的命令行替换总结
- centos6.2 gcc-4.7.0源码编译安装
- linux链表
- 信息检索
- 12-5-19關於signal
- WM_PAINT与WM_ERASEBKGND
- 对网站的图片进行压缩优化
- 运算符重载专题
- 【Android 开发教程】纯编码实现UI
- 有关生活的碎碎念
- 最好的录屏软件 WebEx Recorder Editor
- 多种方法鉴别二手笔记本的成色
- space to breathe
- 软件设计模式之(四) 桥接模式