• 締切済み

コントロールのフォントの変更

コントロールに任意のフォントを指定できなくて困っています。 class CFrame : public CFrame { private: CFont m_cFont; CStatic m_cStatic; public: CFrame(); afx_msg void OnCreate(LPCREATESTRUCT); }; CFrame::CFrame() { Create( // 省略 ); m_cFont.CreateFont( // 省略 ); } axf_msg void CFrame::OnCreate(LPCREATESTRUCT lp) { RECT rect; DWORD dw; rect.top = 10; rect.left = 10; rect.right = 100; rect.bottom = 60; dw = WS_CHILD | WS_VISIBLE; m_cStatic.Create("AAAAAA", dw, rect, this, ID); m_cStatic.SetFont(&m_cFont, TRUE); } 文字は表示されるのですが、フォントがおそらくデフォルトのままだと思われるのですが、どうしてかわかりません。 ダイアログベースでは、OnInitDialogで実行していたと思いますが、以上のコードではだめなんでしょうか? よろしくお願いします。

みんなの回答

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

m_cFont.CreateFont() 成功してますか?戻り値を確認してみてください。 あと、CFrame::CFrame()が呼ばれるタイミングというか、 CFrameのインスタンスが作成されるのはいつでしょう? m_cFont.CreateFont()をOnInitDialog()に移して試してみてください。

donta01
質問者

お礼

単なるコーディングミスというか、勉強不足です。 Createとした後で、CFont.Createしてます。これでは、 OnCreateで、いくらフォント設定しても無駄です。 おかげさまで気がつけました。 ありがとうございました。

donta01
質問者

補足

CreateFontは成功しています(戻り値確認済み)。 C++は勉強中なので以下であっていると思うのですが。 アプリのインスタンスが生成された時にCFrameのインスタンスが生成されると思うのですが。 CApp::InitInstance() { m_pMainWnd = new CMainFrame(); m_pMainWnd->ShowWindow(m_nCmdShow); m_pMainWnd->UpdateWindow(); return TRUE; } CApp App; // アプリケーションのインスタンス生成

関連するQ&A