求教小甲鱼,关于在WM_PAINT使用GetDC,ReleaseDC
如题,经过调试发现,当在WM_PAINT中使用GetDC,ReleaseDC时,跳出循环会触发WM_ERASEBKGND消息,并且只发生一次,下次在调用WM_PAINT中的代码后,不会在发生WM_ERASEBKGND消息,我这样的理解对吗? 响应 WM_PAINT 消息使用 BeginPaint 和 EndPaint {:9_226:}这里羊咩咩转了篇不错的文章:http://bbs.fishc.com/thread-50716-1-1.html 看过这篇文章,我就是想探究一下。我发现BeginPaint执行后,立刻会引起一个WM_ERASEBKGND消息,并且先去执行完过程调用再回来。而GetDC只会在窗口过程调用后引起一次WM_ERASEBKGND,而无效区域始终存在着,为什么后来就不发生WM_ERASEBKGND了,想知道原因。 ”WM_ERASEBKGND是有效区域变无效区域时“系统发出的消息然而在WM_PAINT消息内你使用了GetDC和ReleaseDC这对函数请你注意一点ReleaseDC函数不会告诉系统区域已重写且变成有效区域 后果可想而知,系统一直认为这个区域无效 嗯你认真读读双引号的那句话 那BeginPaint为什么会产生WM_ERASEBKGND消息,不是无效区域变有效区域吗? 我调试发现,WM_PAINT消息内你使用了GetDC确实会产生一次WM_ERASEBKGND消息。 wangwum 发表于 2014-8-18 15:16我调试发现,WM_PAINT消息内你使用了GetDC确实会产生一次WM_ERASEBKGND消息。
然后你会发现如果PAINT内使用GetDC这种方法只会产生一次WM_ERASEBKGND消息 先学会规范,再学奇技淫巧不迟! 学习 {:7_146:}
页:
[1]