有关字体创建后,清除字体对象的问题。
用CFont m_Font,定义个字体对象,然后创建字体。
LOGFONT lf;
lf.lfHeight= fontSize;
lf.lfWidth=0;
lf.lfEscapement=0;
lf.lfOrientation=0;
lf.lfWeight=bBold == TRUE ? 700 : FW_THIN;
lf.lfItalic=0;
lf.lfUnderline=bUnderLine;
lf.lfStrikeOut=0;
lf.lfCharSet=DEFAULT_CHARSET;
lf.lfOutPrecision=OUT_DEFAULT_PRECIS;
lf.lfClipPrecision=CLIP_DEFAULT_PRECIS;
lf.lfQuality=PROOF_QUALITY;
lf.lfPitchAndFamily=VARIABLE_PITCH;
lstrcpyn(lf.lfFaceName, lfFaceName, LF_FACESIZE);
m_Font.CreateFontIndirect(&lf);
以前,这样创建后就不管了。昨天见到一种写法,在析构函数中做释放操作。代码如下:
if(NULL != m_Font.m_hObject)
{
m_Font.DeleteObject();
}
我感觉这样做,没有必要,因为m_Font又不是指针,当类对象销毁时,m_Font也一起销毁。但有比较迷惑,既然有这样的做法也应该有一定的道理。请大家说说看法,给一个正确的解释,谢谢。