关于GDI泄漏

bitwwzhang130 2008-12-31 10:43:16

void ProgressCtrlEx::OnPaint()
{
CPaintDC dc( this ); // device context for painting
..........
..........
if( m_nCurrentPosition > 0 )
{
DrawProgressBar( &dc, rect );
}
dc.DeleteDC();//在这里,如果调用这句,是否就会造成GDI泄漏?
}

请高人帮忙,告诉我下,什么情况下会造成GDI泄漏。
...全文
183 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fandh 2008-12-31
  • 打赏
  • 举报
回复
这儿是不需要加的
对于GDI资源,create的,肯定要自己delete的
dc在用的话,如果是GetDC();要记得RealeseDC();
bitmap、brush、pen等要记得deleteobj;有些局部的,在2000以后的系统,感觉不明显,但是,在98系统里面,是不能释放的!所以,一定要养成配对使用的好习惯!
noenoughmemory 2008-12-31
  • 打赏
  • 举报
回复
up
ilovedrv 2008-12-31
  • 打赏
  • 举报
回复
去掉这句

dc.DeleteDC();//在这里,如果调用这句,是否就会造成GDI泄漏?

参考这个

http://hi.baidu.com/xyh2007/blog/item/29cb6f4aaa2a102108f7ef1e.html
cnzdgs 2008-12-31
  • 打赏
  • 举报
回复
把dc.DeleteDC去掉,不是自己Create的不要Delete。
bitwwzhang130 2008-12-31
  • 打赏
  • 举报
回复
也就是说DC对象不用显示的Delete?
如果用CPen,CBrush等,是否要显示的调用DeleteObject()?
liyinlei 2008-12-31
  • 打赏
  • 举报
回复
dc.DeleteDC();// 不需要调用,因为CPaintDC的析构函数里会释放DC的句柄。

GDI泄露指的是 GDI对象用了之后没有释放 造成的泄露。
GDI对象有DC,画刷、画笔等等。

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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