• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エディットコントロールの色の変更方法)

VC++2008 MFCでエディットコントロールの色を変更する方法

このQ&Aのポイント
  • VC++2008 MFC環境でダイアログに表示されるエディットコントロールの色を変更する方法について説明します。
  • OnCtlColor関数をオーバーライドすることで、エディットコントロールの色を変更することができます。ClassWizardを使用してOnCtlColor関数をオーバーライドする方法を紹介します。
  • クラスウィザードを使用せずにオーバーライドする場合は、コーディングレベルで指定することも可能です。具体的なコーディング方法についても解説します。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

お示しのURLの内容は VC6.0以前を対象に書かれていると思われます VC2002以降ではClassWizardは廃止されております 代わりに プロパティウィンドウを使うようになっています ダイアログエディタで親ウィンドウ(Formやダイアログ)を選択しておいて プロパティウィンドウの『メッセージ』アイコンをクリックします # 右から2番目のアイコン 下のリストの中から WM_CTLCOLORを探します この右側のコンボボックスを開いて <追加> OnCtlColor をクリックします これで イベントハンドラのスケルトンを IDEが書いてくれます 変数の追加には クラスビューを使うか ヘッダーファイルを直接操作するかの方法になるでしょう クラスビューの場合 変数を作成するクラスを選択して 右クリック 追加 > 変数の追加 で表示されるダイアログに 必要事項を入力して OK といった具合です コードレベルでやる場合 メッセージマップを自分で書き、イベントハンドラを定義することになります メッセージマップは Cpp(コード実装ファイル)に BEGIN_MESSAGE_MAP(CSampleEdit01Dlg, CDialog)   ON_WM_PAINT() END_MESSAGE_MAP() といった記述があるはずです この BEGIN_MESSAGE_MAPとEND_MESSAGE_MAPの間にマクロを記述します 今回の場合なら BEGIN_MESSAGE_MAP(CSampleEdit01Dlg, CDialog)   ON_WM_PAINT()   ON_WM_CTLCOLOR() END_MESSAGE_MAP() となります 次に イベントハンドラの定義をします ヘッダーファイルに afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); として ハンドラ関数の定義を記述 CPPファイルに HBRUSH CSampleEdit01Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {   HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);   // TODO : ここで DC の属性を変更してください。   // この部分は追加   if ( nCtlColor == CTLCOLOR_EDIT ) {     pDC->SetBkColor( m_clrEdit );     return (HBRUSH)m_brudhEdit.GetSafeHandle();   }   // ここまで   // TODO : 既定値を使用したくない場合は別のブラシを返します。   return hbr; } といった具合でしょう # 字下げに全角スペースを使用しています # エラーなどが出る場合は置換してください

関連するQ&A