博客
关于我
WM_PAINT 与 WM_ERASEBKGND消息的深入分析
阅读量:661 次
发布时间:2019-03-16

本文共 575 字,大约阅读时间需要 1 分钟。

  1. 当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会使无效区域变得有效)
  2. 当WM_PAINT消息是由InvalidateRect函数产生的时候,如果函数的bErase参数为TRUE,则BeginPaint函数察觉需要擦除背景则发送一个WM_ERASEBKGND消息(后面处理和1一样),如果为FLASE则不发送WM_ERASEBKGND消息。
    总结:如果说WM_ERASEBKGND消息是由BeginPaint函数产生的是不对的(得分情况处理)

转载地址:http://xscqz.baihongyu.com/

你可能感兴趣的文章
Android 架构组件 – 让天下没有难做的 App
查看>>
能解决数据可视化大屏需求的3款可视化工具
查看>>
【Altium Designer21】工作栏中文解析
查看>>
[87]用secureCRT连接虚拟机中的Ubuntu系统,出现“远程主机拒绝连接”错误
查看>>
Shell脚本防DNS攻击检测并删除肉机IP
查看>>
如何在VSCode中定制JSON的IntelliSense
查看>>
椭圆曲线的定义
查看>>
多代理区块链框架客户端的操作
查看>>
RSA操作中的公钥和私钥的生成
查看>>
go语言中类的继承和方法的使用
查看>>
caffe训练的时候遇到的text-format 错误解决方案。
查看>>
Little Zu Chongzhi's Triangles
查看>>
Train Problem II(卡特兰数+大数乘除)
查看>>
一些技术博客
查看>>
第01问:MySQL 一次 insert 刷几次盘?
查看>>
libvirtd:内部错误:Failed to apply firewall rule
查看>>
优先级队列2
查看>>
TiKV 源码解析系列文章(十三)MVCC 数据读取
查看>>
1900分图论 : 1183E1 LCA + Kruskal
查看>>
(建议收藏)计算机网络:传输层概述、UDP协议与可靠传输协议习题解析与拓展
查看>>