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

原创 2012年03月29日 17:24:14

1.HFONT的释放

    HFONT hFont,hOldFont;    
    LOGFONT lf;
    ::ZeroMemory(&lf, sizeof(LOGFONT));
    lf.lfHeight = m_pGrid->pCell[i][k].lfFont.lfHeight;// nHeight
    lf.lfWidth = 0;        // nWidth
    lf.lfEscapement = 0;      // nEscapement
    lf.lfOrientation = 0;      // nOrientation
    lf.lfWeight = m_pGrid->pCell[i][k].lfFont.lfWeight; // nWeight
    lf.lfItalic = m_pGrid->pCell[i][k].lfFont.lfItalic;// bItalic
    lf.lfUnderline = m_pGrid->pCell[i][k].lfFont.lfUnderline;// bUnderline
    lf.lfStrikeOut = FALSE;     // cStrikeOut
    lf.lfCharSet = DEFAULT_CHARSET;    // nCharSet
    lf.lfOutPrecision = OUT_DEFAULT_PRECIS;  // nOutPrecision
    lf.lfClipPrecision = CLIP_DEFAULT_PRECIS;   // nClipPrecision
    lf.lfQuality = DEFAULT_QUALITY;    // nQuality
    lf.lfPitchAndFamily = DEFAULT_PITCH|FF_SWISS;// nPitchAndFamily
    lstrcpy(lf.lfFaceName,m_pGrid->pCell[i][k].lfFont.lfFaceName);  // lpszFacename 
   

    hFont = ::CreateFontIndirect(&lf);//创建字体
    hOldFont = (HFONT)::SelectObject(hDstDC,hFont);//DC选中字体

    ... ...

    pdc->SelectObject(hOldFont);
    ::DeleteObject(hFont);

 

2.CPen的释放

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

 ... ...

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

 

MFC GDI环境HFONT、Cpen类型使用完后必须按时释放

在使用OpenGL编写基于MFC的OpengGL PPI显示器的时候,开始总会有内存溢出,一直找不到原因,后来发现是创建了一个HFONT的字体变量,然后字体用完后没有释放,原本以为HFONT类型的变量...
  • niusiqiang
  • niusiqiang
  • 2015年01月25日 18:13
  • 548

LOGFont和HFont和CFont

实际上就是逻辑字体和物理字体的区别 LOGFONT: 一个结构,用来逻辑上表达一个字体,比如LOGFONT.lfFaceName是字体的名字  HFONT: 一个句柄,相当于表示内存中的一个字...
  • zmr1991
  • zmr1991
  • 2014年12月11日 10:43
  • 932

CFont与LOGFont、HFont是什么关系,如何建立联系?

CFont  ftFolders; CFont  ftItems; CFont  ftHotItems;LOGFONT lf; HFONT hf = (HFONT) GetStockObject(DE...
  • qsycn
  • qsycn
  • 2009年06月20日 16:07
  • 6197

DuiLib(6)——界面管家CPaintManagerUI的函数简介

一、Init void Init(HWND hWnd, LPCTSTR pstrName = NULL);初始化界面元素,清除所有的图片、字体、……总之就是一切恢复到原始状态了 二、Invalid...
  • wyansai
  • wyansai
  • 2016年04月03日 22:39
  • 1714

GDI+中Font创建

GDI+中创建Font的构造函数有以下几个: Font(IN HDC hdc); Font(IN HDC hdc, IN const LOGFONTA* logfont); ...
  • ErikLiu
  • ErikLiu
  • 2011年08月05日 11:30
  • 4729

CFont与LOGFont、HFont是什么关系,CDC *pDC和HDC hdc有什么不同?

CFont与LOGFont、HFont是什么关系,CDC *pDC和HDC hdc有什么不同,类似的有CWnd *pWnd和HWnd? ...
  • favory
  • favory
  • 2010年08月30日 11:15
  • 2412

error C2226: 语法错误 : 意外的“HFONT”类型

今天在做项目,利用duilib和MFC的界面混用的时候,出现如下情况: ..\atlmfc\include\afxbutton.h(183): error C2226: 语法错误 : 意外的“HFO...
  • u013267687
  • u013267687
  • 2017年11月24日 10:01
  • 164

GDI+对象的释放

    像包装了文件句柄和数据库连接等非托管资源的类需要特殊处理以确保其资源被适当地释放一样,Pen、Brush和其他代表图形基元的GDI+类也在此范畴之内,因为他们包装了GDI+的句柄。如果关闭GD...
  • jianbao
  • jianbao
  • 2006年12月15日 10:26
  • 4006

DotNet下使用GDI+绘图时资源是否需要释放

DotNet下使用GDI+绘图时资源是否需要释放 可能很少有人注意到这样的问题,最近我在写一个绘图模块的时候,忽然意识到这好象是一个问题,因为不过我们以前用GDI绘图时,书本的代码会明确地告诉你一定要...
  • BlueDog
  • BlueDog
  • 2006年05月08日 00:51
  • 4056

[MFC]CPen画笔类、CBrush画刷类使用介绍

[MFC]CPen画笔类、CBrush画刷类使用介绍
  • hk627989388
  • hk627989388
  • 2016年12月07日 15:44
  • 4534
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CPen,HFONT用完一定要释放,不然会造成GDI对象的增加,程序崩溃
举报原因:
原因补充:

(最多只允许输入30个字)