标题
mfc gdi 类不要调用两次 create... 函数
clq
浏览(0) +
2010-04-29 09:56:07 发表
编辑
关键字:
mfc gdi 类不要调用两次 create... 函数
//背景
CBrush brush_bk;
dc.FillRect(&rect, &brush_frame);//return;
//brush.CreateSolidBrush(bkColor);//重复创建会造成资源泄漏,产生"所需资源不可用错误"
brush_bk.CreateSolidBrush(bkColor);//用一个新实例来生成新的画刷
clq
不显式删除是可以的,我估计是它只简单的隐式删除了最近一个 create.. 的句柄,没有在 create.. 没有判断上一个句柄是否存在并删除.
clq
另外象 mfc 这样会自动释放的 gdi 类还有 dc 系列如果是我们自己操作 dc 一定要记得释放
hDC = ::GetDC(NULL);
::ReleaseDC(NULL, hDC);//一定要记得调用这个
字体也是
handle = CreateFontIndirectA(&logFont); //要销毁吗?
DeleteObject(handle);
clq
注意不能 DeleteObject 一个正在用的物体.
MSDN 如果说 "Do not delete a drawing object (pen or brush) while it is still selected into a DC."
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.