
環境はVC++2008 MFCです。
現在ダイアログにスタティックテキストの色を変更しようと
下記HPを参考にしていますが、
「OnCtlColor関数のオーバーライド
ClassWizardを使って、OnCtlColor関数をオーバーライドさせる。 」
の方法がわかりません。
http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_E …
クラスビュー>
ダイアログクラス選択>
プロパティ>
メッセージ
を表示してみても何も表示されていませんし。
どのようにどのようにオーバーライドするのでしょうか?
また、オーバーライドの方法をクラスウィザードを使用せず
後学の為、そのままコーディングレベルでご教授頂いたとしても
とてもありがたいと思います。
宜しくお願いします。
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Excel(エクセル) 2列のエクセルの表を変更したい 6 2022/07/01 11:19
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- JavaScript 指定時間になったら、WEBサイトの更新を自動で行うには…? 3 2022/04/28 22:14
- その他(パソコン・周辺機器) EXCELで「WEBオプションの対象ブラウザ」を変更する方法 2 2023/04/12 15:44
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- Windows 10 Windows11タスクバーやエクスプローラー、スタートメニュー 動画全画面時にカーソルが見えない 1 2022/04/08 00:03
このQ&Aを見た人はこんなQ&Aも見ています
-
ボタンの表示の色、フォントを変更したい
C言語・C++・C#
-
画面を強制的に再描画させる方法
C言語・C++・C#
-
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
-
4
エディットボックスのフォントを変えたい
C言語・C++・C#
-
5
ラベル(スタティックテキスト)内での改行。
C言語・C++・C#
-
6
CStaticコントロールの静的イメージ描画
C言語・C++・C#
-
7
ダイアログ内コントロールの位置取得について
C言語・C++・C#
-
8
MFCでコンボボックスを選択不可状態にしたい
C言語・C++・C#
-
9
MFCでOnPaintのタイミング
C言語・C++・C#
-
10
リソースエディタでスタティックテキストの文字サイズの変更
C言語・C++・C#
-
11
CFileDialogの最初のディレクトリ設定
C言語・C++・C#
-
12
エディットボックスの背景の色変更方法
C言語・C++・C#
-
13
ラジオボタンのグループ化
C言語・C++・C#
-
14
MFC ダイアログ上のID取得について
C言語・C++・C#
-
15
CStringをwchar_tに変換したい
C言語・C++・C#
-
16
ダイアログボックスで指定したサイズどおり表示されない
C言語・C++・C#
-
17
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
18
ボタンのオーナードローについて
C言語・C++・C#
-
19
static 文字が上に張り付いて・・・
C言語・C++・C#
-
20
エディットボックスの入力制限について
C言語・C++・C#
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VC++.NET DLLからのダイアログ...
-
チャイルドダイアログボックス...
-
Visual C++のダイアログ編集画...
-
CRichEditCtrlでペーストする文...
-
メッセージボックスのサイズに...
-
メッセージボックスを大きくす...
-
javascriptのconfirmについて
-
Menu 項目のあとにつづく ......
-
ダイアログのボタンが押せない
-
Debugモードが選択できません
-
見た目にもこだわるGUIツール制作
-
vbscriptで、ファイル選択ダイ...
-
SDKについて…新規ウィンドウ
-
Minecraft 統合版(PC)の描画距...
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
エクセルで作った新しいウイン...
-
VBAでコントロールのハンドルを...
-
Paint Shop Pro で
-
「アイテムは収集されました」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ボタンの表示の色、フォントを...
-
C# ボタンコントロール内で文字...
-
メッセージボックスを大きくす...
-
フォーム上のリストボックスに...
-
リソースファイルとは・・・
-
ダイアログの上のテキストボッ...
-
MFCダイアログボックスを最前面...
-
メッセージボックスのボタン文...
-
コンボボックスのドロップダウ...
-
ボタンの配置を変更したい
-
ダイアログボックスで指定した...
-
'int' から 'LPCSTR' に変換で...
-
ダイアログのボタンが押された...
-
ダイアログ最前面表示時の後ろ...
-
ダイアログの表示位置の保存
-
confirmダイアログの表示文字に...
-
ダイアログ間のメッセージの送...
-
エディットコントロールの色の...
-
MFC ポップアップメニューのチ...
-
vbscriptで、ファイル選択ダイ...
おすすめ情報