mfc中关于画图操作而导致ASSERT(m_hObject == NULL);中断问题
2015-03-21 17:31
274 查看
今天在使用mfc画图,界面在重绘时会出现ASSERT(m_hObject == NULL)中断问题,
出问题的地方是这两个画刷我是在单文档定义成类的成员变量,
public:
//二维绘图
CBrush m_Bkbrush; //二维背景画刷,不能定义成类的成员变量,这样在窗口重绘时会出现Assertion错误
CBrush m_Rulerbrush
问题:定义成类的成员变量的话重绘操作时由于资源没有及时释放掉导致m_hObject != NULL,所以会出现ASSERT(m_hObject == NULL)中断。
解决办法:
void CAeroNetView::DrawCoordinate( CDC *pDC )
{
CBrush m_Bkbrush; //二维背景画刷,不能定义成类的成员变量,这样在窗口重绘时会出现Assertion错误
CBrush m_Rulerbrush( RGB(220,220,220) ); //二维尺度背景画刷
m_Bkbrush.CreateStockObject( LTGRAY_BRUSH );
. . . . . .
}
将画刷定义成函数的局部变量,这样在函数调用结束之后会自动释放资源,这样就不会出现中断问题了。
出问题的地方是这两个画刷我是在单文档定义成类的成员变量,
public:
//二维绘图
CBrush m_Bkbrush; //二维背景画刷,不能定义成类的成员变量,这样在窗口重绘时会出现Assertion错误
CBrush m_Rulerbrush
问题:定义成类的成员变量的话重绘操作时由于资源没有及时释放掉导致m_hObject != NULL,所以会出现ASSERT(m_hObject == NULL)中断。
解决办法:
void CAeroNetView::DrawCoordinate( CDC *pDC )
{
CBrush m_Bkbrush; //二维背景画刷,不能定义成类的成员变量,这样在窗口重绘时会出现Assertion错误
CBrush m_Rulerbrush( RGB(220,220,220) ); //二维尺度背景画刷
m_Bkbrush.CreateStockObject( LTGRAY_BRUSH );
. . . . . .
}
将画刷定义成函数的局部变量,这样在函数调用结束之后会自动释放资源,这样就不会出现中断问题了。
相关文章推荐
- 关于多线程中涉及UI操作,导致UI线程阻塞问题
- 关于MFC中数据库操作中遇到的问题:Microsoft C++ 在xxx内存处出现问题_com_error的另一解决方案
- 关于Oracle10.2.0自行启动两个监听进程导致服务中断问题
- 关于FLEX事件堆积 导致处理操作叠加 问题
- 关于CFont类型成员变量m_font 在使用m_font.CreatePointFont时出现ASSERT(m_hObject == NULL)断言
- 关于sqlite3使用操作中内存耗尽导致进程被kill的问题
- 关于在win本地远程hadoop集群开发导致的NullPointerException问题
- 构造函数的职责 -- 关于全局变量的构造函数里执行太多复杂操作导致的问题
- 关于进入.so库文件,导致的findLibrary returned null问题
- 关于Android设备中,网页端上传操作导致浏览器刷新的问题
- 关于Ubuntu-17.04的失误操作问题导致系统进入死锁的问题
- MFC多个dll同时操作时导致资源出错问题
- 关于VC画图闪屏的问题 - VC/MFC / 基础类
- 关于rhel5.5,卸载软件一半被强制中断,导致卸载与安装出错的问题解决办法
- 关于Oracle10.2.0自行启动两个监听进程导致服务中断问题
- 一个关于 客户端非法取消正在进行的数据提交操作 的问题 的讨论
- 字符集问题的初步探讨(七)--关于字符集更改的内部操作
- [C++][MFC]关于菜单的一些操作
- 关于Access2003数据集操作的一个简单问题
- 关于PHP中操作MySQL数据库的一些要注意的问题