一个例子:
void CMainWindow::OnPaint ()
{
CRect rect;
GetClientRect (&rect);
CPaintDC dc (this);
dc.SetViewportOrg (rect.Width () / 2, rect.Height () / 2);
dc.SetBkMode (TRANSPARENT);
for (int i=0; i<3600; i+=150) {
LOGFONT lf;
::ZeroMemory (&lf, sizeof (lf));
lf.lfHeight = 160;
lf.lfWeight = FW_BOLD;
lf.lfEscapement = i;
lf.lfOrientation = i;
::lstrcpy (lf.lfFaceName, _T ("Arial"));
CFont font;
font.CreatePointFontIndirect (&lf);
CFont* pOldFont = dc.SelectObject (&font);
dc.TextOut (0, 0, CString (_T (" Hello, MFC")));
//WHY THIS LINE?
dc.SelectObject (pOldFont);
}
}
代码在原点(移动到窗口的中心)周围的圆圈中打印“Hello,MFC”。
为什么创建 CFont 指针然后 dc 选择它作为字体?这只是良好的编程实践还是这个应用程序真的需要它?
我在网上看到过类似的代码,它使用位图和其他设备上下文对象执行此操作。目的是什么?
当我删除最后一行代码时,没有任何变化。在此先感谢您的帮助。