適例:
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 がそれをフォントとして選択するのはなぜですか? それは単なる良いプログラミングの練習ですか、それともこのアプリは実際にそれを必要としていますか?
Bitmaps やその他のデバイス コンテキスト オブジェクトでこれを行う同様のコードを Web で見たことがあります。目的は何ですか?
コードの最後の行を削除しても、何も変わりません。助けてくれてありがとう。