DeleteObject(Bitmap.m_hObject)对象创佳完成以后,必须删除对象
来源:互联网 发布:java frame 组件 编辑:程序博客网 时间:2024/05/17 07:48
DeleteObject之我见,真的不能删除已选入DC的GDI对象?MSDN中关于DeleteObject函数的解释,我看过三、四个版本,都说不能删除已选入DC的GDI对象,比如MSDN2005:
Return ValuesIf the function succeeds, the return value is nonzero.If the specified handle is not valid or is currently selected into a DC, the return value is zero.
Windows NT/2000/XP: To get extended error information, call GetLastError.
RemarksDo not delete a drawing object (pen or brush) while it is still selected into a DC.
注意上面的Do not,看到真是吓人,我记得以前某个版本的MSDN写的是Should not,可是我从来都是直接删除GDI对象的,从来不关心它是否已选入DC,比如:CDC* pDC = GetDC();CPen pen(PS_SOLID, 1, RGB(255, 0, 0));pDC->SelectObject(&pen);if (pen.DeleteObject()) Beep(1500, 100); //选择MSDN,这个Beep应该不会被执行,实际是执行了ReleaseDC(pDC);上面的程序会Beep,说明删除是成功的;在debug版下,没有断言错误(从源码也可以看出,它直接就调用了API-::DeleteObject);用baundschecker查看内存,没有泄漏。
到这里,不知道你的观点是怎么样的呢?注:我的一个曲线绘制控件,十天半个月的自动绘制实时曲线,没有发现GDI泄漏的问题,已使用几年了,所以我才敢怀疑MSDN中的说法。注意,我讨论的是能不能删除已选入DC的GDI对象,而不是讨论程序是否合理!也就是说,我讨论的是是与否的问题,而非好与次的问题,所以应该不算钻牛角尖吧!
- DeleteObject(Bitmap.m_hObject)对象创佳完成以后,必须删除对象.
- DeleteObject(Bitmap.m_hObject)对象创佳完成以后,必须删除对象
- DeleteObject之我见,真的不能删除已选入DC的GDI对象?
- Qt对象new以后的删除
- 删除未知账户,您必须阻止对象继承权限
- 得到一个BitMap对象
- ImageLoader获取bitmap对象
- drawable转为bitmap对象
- Activity传递Bitmap对象
- 对象必须实现 IConvertible
- 黑马程序员_3_TreeMap是如何完成添加对象与删除对象
- 对象使用完成后
- 保存Graphics对象到Bitmap对象
- [转帖]保存Graphics对象到Bitmap对象
- 形象解释DC、绘图编制过程以及各个对象、SelectObject()、DeleteObject()
- DeleteObject()
- 绘制一个位图(Bitmap)对象
- Android bitmap对象序列化
- PHP中如何使用header发送头部信息
- JTA简介
- xslt中如何获得xml记录数
- 用Delphi编写WebService的心得体会
- ajax网站拖拽效果
- DeleteObject(Bitmap.m_hObject)对象创佳完成以后,必须删除对象
- VC++实现对文件夹时间的修改
- Asp.netForm 验证
- JSP页面给对象或字段设置属性的区别
- 语音识别编程技术
- 利用JavaGroups实现可视化购物车
- WIN2K环境下WSDL2Java.bat不能正确执行的问题
- 把汉字转化成ACSII 值
- IT从业人员必看的10个论坛