MFC的GDI对象的构造与释放
来源:互联网 发布:淘宝网店出售偷拍设备 编辑:程序博客网 时间:2024/06/06 13:05
首先要区分c++对象与GDI对象。GDI对象对应于系统资源,例如一个窗口,GDI对象就是这个窗口分配的一块内存,而这块内存由句柄标识;c++对象只是封装了这个句柄,例如CWinApp类封装了m_hInstance, CWnd封装了m_hWnd。
一、设备上下文(DC)
CDC对象封装了设备上下文的一个句柄m_hDC,如果通过GetDC();来操作设备上下文,一定要在退出函数时调用ReleaseDC();
GetDC();相当于获得了一个当前设备上下文的一个副本,调用它是会重新分配内存的,ReleaseDC();相当于将新分配的内存释放掉。
如果CClientDC来操作设备上下文,那么它会在对象的析构函数中调用ReleaseDC();
二、一般GDI对象(画刷、字体、位图、笔...)
如果通过全局函数来加载,例如
HBITMAP hBitmap;hBitmap = LoadBitmap(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDB_BITMAP1));//将其选入设备上下文// ...// ...DeleteObject(hBitmap);
一定要在使用后调用DeleteObject(hBitmap);
虽然其并没为资源新分配内存,但会让句柄值设为NULL,毕竟句柄值的资源有限。
CSDN上的原话:The application must call the DeleteObject function to delete each bitmap handle returned by theLoadBitmap function
如果是通过c++对象来加载资源,例如:
CBitmap bitmap;//局部变量
bitmap.LoadBitmap(IDB_BITMAP1);
在CBitmap中的析构函数中会调用DeleteObject。
0 0
- MFC的GDI对象的构造与释放
- GDI+对象的释放
- 关于GDI 对象的创建和释放
- VC++中GDI对象的释放问题
- GDI+ 对象释放崩溃的问题
- GDI资源的释放
- GDI资源的释放
- 关于MFC GDI对象资源释放一些注意事项
- 《MFC windows程序设计》中关于GDI对象的选定
- MFC Windows 程序设计->取消对GDI对象的选定
- 关于GDI资源使用后未释放,导致GDI对象猛增,程序花屏,异常退出的问题
- MFC的DEBUG_NEW与GDI+的冲突问题
- MFC的DEBUG_NEW与GDI+的冲突问题
- GDI与GDI+的区别
- STL::List的对象存储与释放
- c++对象的动态创建与释放
- 关于GDI Objects的释放和测试
- CPen,HFONT用完一定要释放,不然会造成GDI对象的增加,程序崩溃
- Android测试原理概述(一)
- 双缓冲与闪烁
- 深入浅出gstreamer开发
- java学习笔记之length、length()和size()
- 游戏测试之我思与我想
- MFC的GDI对象的构造与释放
- Annotation注解----详解(3)
- NSURLConnection简单使用
- tiny6410裸机实验第5章--------------DDR(物理地址,链接地址,虚拟地址,地址无关码)
- QT信号与槽的机制
- C++何时才提供默认构造函数
- 对c++的认识
- automake/autoconf打包简单实例
- 子墨对酒《三国杀》里论模式(伍)模板方法