MFC CFont 要释放的资源总结

参考:

vs2017异常 debug assertion failed! Program:program name unknown File:wingdi.cpp line 1113

CPen,HFONT用完一定要释放,不然会造成GDI对象的增加,程序崩溃

 

操作字体时如果使用了多个CFont对象,出现这个问题

File:f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\ wingdi.cpp line 1113

解决办法释放旧字体再使用新字体

font.DeleteObject();

 

CFont字体使用方法,用完要释放

    mFont = ::CreateFontIndirect(&lf);//创建字体
     ... ...

    pdc->SelectObject(mFont);  //SetFont
    ::DeleteObject(hFont);

这个字体释放以后可能会导致字体使用失败的情况,字体应声明成类的成员变量m_font,然后在析构函数中释放。要使用多个cfont变量时需要释放上一个

CPen的释放

 CPen pen(PS_SOLID,1,m_GP_clrFrame);
 CPen *pOldPen;
 pOldPen = pdc->SelectObject(&pen);

 ... ...

 pdc->SelectObject(pOldPen);
 pen.DeleteObject();

posted @ 2021-05-19 10:17  ckrgd  阅读(940)  评论(0编辑  收藏  举报