BeginPaint()和EndPaint()

infsafe 2009-04-20 06:52:52
我调用了BeginPaint()后不调用EndPaint()会有什么结果??
...全文
172 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
JulianSeaver 2009-06-08
  • 打赏
  • 举报
回复
endpaint其实还有一个功能. 就是标志当前的窗口已经绘完. 如果不调用它. 那么有可能线程的消息队列中不会清除掉WM_PAINT, 即会不停的收到WM_PAINT消息 .
虽然平时不一定看得出来这一点. 但有时会有影响绘图, 有一次我自绘窗口移动时. 就发现我的框怎么都画不出来, 跟了半天, 就发现是一直陷入了WM_PAINT里面去了. 我画的外框就不停的被它覆盖掉.
而且如果内容比较丰富的话并且不使用又缓冲. 会看得出闪烁.
Sco_field 2009-04-20
  • 打赏
  • 举报
回复
循环100000次调用而不释放,看什么结果
「已注销」 2009-04-20
  • 打赏
  • 举报
回复
你可以通过任务管理器看资源句柄不关闭导致的资源泄露情况。
你可以在循环里多次BeginPaint看看
「已注销」 2009-04-20
  • 打赏
  • 举报
回复
更正一下:不叫资源数,叫资源句柄。打错字 了。
「已注销」 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 infsafe 的回复:]
谢谢您!能否举个例子?比如说我在windows上显示了一行字;然后怎么测试让这个死锁的结果显示出来呢?
[/Quote]
一行字是显示不出来什么的。
其实,应该不是死琐,而是资源不能及时释放。
如果GDI资源大量浪费,会导致菜单的背景色变黑。
一般来讲:系统允许的资源数不能超过某一个值的。
infsafe 2009-04-20
  • 打赏
  • 举报
回复
up
infsafe 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hairetz 的回复:]
http://jcszjswkzhou.itpub.net/post/32804/315417
显示完成后,一定要记得调用函数EndPaint,因为使用BeginPaint函数请求了独占的显示资源后,如果不释放回去,就会让其它程序永远获取不到显示资源了,这样系统就死锁了。
[/Quote]
谢谢您!能否举个例子?比如说我在windows上显示了一行字;然后怎么测试让这个死锁的结果显示出来呢?
mengde007 2009-04-20
  • 打赏
  • 举报
回复
my god^
  • 打赏
  • 举报
回复
http://jcszjswkzhou.itpub.net/post/32804/315417
显示完成后,一定要记得调用函数EndPaint,因为使用BeginPaint函数请求了独占的显示资源后,如果不释放回去,就会让其它程序永远获取不到显示资源了,这样系统就死锁了。

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧