MFC字体问题,为什么要保存旧的字体指针?

CFont*pOldFont=pDC->SelectObject(&m_font);//1pDC->TextOutW(0,0,m_strFontName);//2pDC-... CFont *pOldFont=pDC->SelectObject(&m_font);//1
pDC->TextOutW(0,0,m_strFontName);//2
pDC->SelectObject(pOldFont);//这句输出旧的字体有什么用啊,代码1不是输出字体了,我感觉这一句就是和代码1重复了。而且注释掉,也不影响我选择的字体输出到屏幕上,求解?
展开
 我来答
bhtzu
推荐于2016-05-17 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4232万
展开全部
目的是为了防止GDI资源泄漏,和指针创建之后要释放是一个道理。
各种GDI资源(CFont CPen CBrush等)因为在OnPaint/OnDraw中频繁使用,需要合理的释放资源,否则很容易造成界面崩溃(当然,短时间看不出问题,只能在任务管理器中看到占用内存在增加)。
旧指针pOldFont保存的目的,就是为了SelectObject(pOldFont);,这样等于是将m_font从pDC这个DC中“摘出来”,不在绑定,这样m_font就可以正常释放了,否则当m_font还在pDC中绑定的时候,是不能正常释放的,就会造成资源泄漏。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式