mfc中关于画图操作而导致ASSERT(m_hObject == NULL);中断问题

来源:互联网 发布:淘宝号永久封号 编辑:程序博客网 时间:2024/06/05 10:40

    今天在使用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 ); 

. . . . . . 

}

将画刷定义成函数的局部变量,这样在函数调用结束之后会自动释放资源,这样就不会出现中断问题了。

0 0
原创粉丝点击