MFC CFont 要释放的资源总结

参考:

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

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

 

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

File:f:ddvctoolsvc7libsshipatlmfcsrcmfc 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();

原文地址:https://www.cnblogs.com/ckrgd/p/14783980.html