我在MFC中读取代码,但与下面的代码混淆:
void EditView::ResetDefaultFont()
{
HFONT hFont = (HFONT)::GetStockObject(DEFAULT_GUI_FONT);
CDC* pDC = GetDC();
CFont* pFont = pDC->SelectObject(CFont::FromHandle(hFont));
pDC->SelectObject(pFont);
::DeleteObject(hFont);
}
为何选择CDC首先选择默认字体(CFont* pFont = pDC->SelectObject(CFont::FromHandle(hFont));
),但再次选择pFont?
答案 0 :(得分:1)
第一个SelectObject
调用会更改在设备上下文中选择的字体。
第二次SelectObject
调用将字体重置为第一次调用之前的字体。
虽然这回答了第二次通话的“原因”,这就是你所要求的,但我不知道完成通话序列的重点是什么。我找不到ResetDefaultFont
的文档结果,既没有在MSDN Library中在线,也没有在本地Visual Studio 2012帮助中。为了彻底,我在VS 2012中创建了一个新的默认MFC项目,并在从ResetDefaultFont
派生的类的构造函数中使用了标识符CEditView
。它没有编译:没有这样的。
所以,
你从哪里获得ResetDefaultFont
函数?
答案 1 :(得分:-2)
答案很简单。 此代码仅用于获取DC的当前字体。 如果他们按照这些陈述放置了代码,那就很明显了。