0

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を再度選択するのはなぜですか?

4

2 に答える 2

1

最初のSelectObject呼び出しは、デバイスコンテキストで選択されたフォントを変更します。

2回目のSelectObject呼び出しで、フォントが最初の呼び出し前のフォントにリセットされます。

それはあなたが尋ねていることである2番目の呼び出しの「理由」に答えますが、完全な呼び出しシーケンスを実行することのポイントが何であるかはわかりません。ResetDefaultFontオンラインのMSDNライブラリにもローカルのVisualStudio2012ヘルプにも、のドキュメントの結果が見つかりません。念のため、VS 2012で新しいデフォルトのMFCプロジェクトを作成し、ResetDefaultFontから派生したクラスのコンストラクターで識別子を使用しましたCEditView。コンパイルされませんでした:そのようなものはありません。

それで、

ResetDefaultFontその機能はどこから入手しましたか?

于 2012-12-24T07:16:20.817 に答える
-2

答えは非常に簡単です。このコードは、DCの現在のフォントを取得するためだけのものです。もし彼らがこれらのステートメントの後にコードを配置していたら、それは明白だったでしょう。

于 2015-07-15T08:59:35.357 に答える