鱼C论坛

 找回密码
 立即注册
查看: 3005|回复: 10

求教小甲鱼,关于在WM_PAINT使用GetDC,ReleaseDC

[复制链接]
发表于 2014-8-17 11:30:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如题,经过调试发现,当在WM_PAINT中使用GetDC,ReleaseDC时,跳出循环会触发WM_ERASEBKGND消息,并且只发生一次,下次在调用WM_PAINT中的代码后,不会在发生WM_ERASEBKGND消息,我这样的理解对吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-17 14:52:42 | 显示全部楼层
响应 WM_PAINT 消息使用 BeginPaint 和 EndPaint
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-17 14:53:32 | 显示全部楼层
这里羊咩咩转了篇不错的文章:http://bbs.fishc.com/thread-50716-1-1.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-17 15:36:54 | 显示全部楼层
看过这篇文章,我就是想探究一下。我发现BeginPaint执行后,立刻会引起一个WM_ERASEBKGND消息,并且先去执行完过程调用再回来。而GetDC只会在窗口过程调用后引起一次WM_ERASEBKGND,而无效区域始终存在着,为什么后来就不发生WM_ERASEBKGND了,想知道原因。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-17 16:47:53 | 显示全部楼层
”WM_ERASEBKGND是有效区域变无效区域时“  系统发出的消息  然而在WM_PAINT消息内你使用了GetDC和ReleaseDC这对函数  请你注意一点  ReleaseDC函数不会告诉系统区域已重写且变成有效区域    后果可想而知  ,系统一直认为这个区域无效     嗯  你认真读读双引号的那句话  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2014-8-18 15:15:18 | 显示全部楼层
那BeginPaint为什么会产生WM_ERASEBKGND消息,不是无效区域变有效区域吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-18 15:16:32 | 显示全部楼层
我调试发现,WM_PAINT消息内你使用了GetDC确实会产生一次WM_ERASEBKGND消息。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-18 15:43:41 | 显示全部楼层
wangwum 发表于 2014-8-18 15:16
我调试发现,WM_PAINT消息内你使用了GetDC确实会产生一次WM_ERASEBKGND消息。

然后你会发现  如果PAINT内使用GetDC这种方法  只会产生一次WM_ERASEBKGND消息
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-19 15:26:03 | 显示全部楼层
先学会规范,再学奇技淫巧不迟!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-25 10:46:53 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-31 09:39:29 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-27 22:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表