
No.2ベストアンサー
- 回答日時:
>はじめに紹介いただいたページは私も見ていましたが、サンプルコードにたどり着く方法がわかりませんでした。
どのクラスの、どのメッセージハンドラに入れればいいのか…って程度かと思われますが…。
MSのサイトの方ので背景色の変更ができる。
かと思われます。
# 記述されている手順に従っていけば背景色が変更できるかと。
以下、VS2008は持っていない(EEのみのためMFCが使えない)のでVS2005で…
# VS2005とVS2008で大きな違いはない…でしょう。たぶん。
>1.ClassWizard でジェネリック CWnd クラスを作成します。
クラスビュー内のTreeViewの先頭ノード(プロジェクト名で表示されているノード)で右クリック、
[追加]-[クラス]と進んで、テンプレートからMFCクラスを選択して[追加]ボタンをクリック。
基本クラスはCWndのままクラス名にCNewClientWndを指定して[完了]ボタンをクリック。
>2.CMainFrame クラスに手順 1、CWnd クラスの型を使用してメンバー変数を追加します。
クラスビュー内のCMainFrameで右クリック、
[追加]-[変数の追加]と進んで、変数の種類に1.で追加したクラス名を指定、変数名にm_wndNewClientを指定して[完了]ボタンをクリック。
>3.CMainFrame の OnCreate メンバー関数の呼び出しの後に、基本クラスのCMDIFrameWnd::OnCreate()、SubclassWindow() への呼び出しを追加します。
ソリューションエクスプローラからMainFrame.cppを開いて、OnCreate()の最後に掲示されているコードを追加。
>4.ウィンドウをサブクラス化するたびに、GetSuperWndProcAddr() メンバー関数は、CWnd の記憶域、元のウィンドウ プロシージャのアドレスを提供するためにオーバーライドする必要があります。そのためには、手順 1 で作成した CWnd クラスの実装に次の関数を追加します。
今回はサブクラス化しないので無視。
>5.上に示したコードを使用して、ジェネリックの CWnd クラスに WM_ERASEBKGND メッセージをオーバーライドします。
クラスビュー内のCNewClientWndを選択して右クリック、[プロパティ]を選択してプロパティを表示。
表示されたプロパティのツールバーから「メッセージ」を選択すると、下にメッセージがずらずら出てきているのでWM_ERASEBKGNDを選択して右のコンボボックスのプルダウンボタン(下向きの三角)をクリック。
「<追加> OnEraseBkgnd」を選択してクリックしてメッセージハンドラを追加。
該当ハンドラの編集画面になるので、
CNewClientWnd::OnEraseBkgnd()に掲示されているサンプルコードのBOOL CSampleView::OnEraseBkgnd(CDC* pDC)の中身をコピペ。
# 元々あった return CWnd::OnEraseBkgnd(pDC); は削除。
で、ビルドして実行してみると背景色が変わるかと。
CNewClientWnd::OnEraseBkgnd()内でpDCに対して描画するコードを追加すれば良いかと思います。
No.1
- 回答日時:
回答ありませんね……
「MFC MDI 背景 描画」で検索すると…
http://www.mermaid-tavern.com/tomato/pc1/mfc3_03 …
とか
http://support.microsoft.com/kb/103786/ja
とか見つかるかと。
この回答への補足
貴重なご意見、ありがとうございます。
はじめに紹介いただいたページは私も見ていましたが、サンプルコードにたどり着く方法がわかりませんでした。
このページにサンプルコードはあるのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 ノートPCをスリープにするとアプリが閉じてしまう。 3 2022/04/14 18:33
- Illustrator(イラストレーター) 会社の名刺作成時にロゴを配置する方法 3 2023/06/06 18:06
- Windows 10 フォルダの新規作成を必ず「ドキュメント」にする方法 1 2023/06/24 09:08
- その他(ソフトウェア) Figma 1 2023/06/23 14:22
- ノートパソコン EXCEL のドキュメントの回復について 2 2023/03/19 17:16
- レトロゲーム 回答が来なくて困っています!!!誰か助けて下さい!!! https://ux.getuploader 1 2022/11/20 13:54
- Windows 10 2つのウィンドウ選択時の表示について 10 2023/07/25 08:48
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- その他(クラウドサービス・オンラインストレージ) データ保存先をOneDriveからPC本体に変えたらDocumentとPictureフォルダが消えた 1 2023/07/30 15:48
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA チェックボックスをオーバ...
-
FriendとPublicの違い。。。
-
DataGridViewのセルに斜線を引...
-
ダイアログクラスのコントロー...
-
VB.NETでクラスライブラリプロ...
-
C++勉強中なんですが
-
イベントにAddHandlerされてい...
-
個々の関数について継承してい...
-
WindowsAPIのリストビューの...
-
C#で、動的にサブクラスを取得...
-
MFCのドラッグ&ドロップについて
-
MFCアプリのコマンドラインでパ...
-
既定のコンストラクタがない?
-
ダイアログ表示時にチェックボ...
-
エディットコントロールのイベ...
-
エディットコントロールでEnter...
-
C# 別プロジェクトのフォームを...
-
【C++】vectorについて
-
C#で通常のbuttonコントロール...
-
コンソールアプリでのクリップ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA チェックボックスをオーバ...
-
FriendとPublicの違い。。。
-
既定のコンストラクタがない?
-
イベントにAddHandlerされてい...
-
(UWSC) 「#32770」の意味わかり...
-
ボタンのオーナードローについて
-
MFCアプリのコマンドラインでパ...
-
ダイアログ表示時にチェックボ...
-
【ASP.NET】 独自で作成したク...
-
エディットコントロールでEnter...
-
MFCのドラッグ&ドロップについて
-
オーバーライド関数の呼び出し...
-
DataGridViewのセルに斜線を引...
-
MFCのCListCtrlでスクロールを検出
-
C++ protectedにアクセス不可
-
ダイアログクラスのコントロー...
-
クラスのアドレスを引数として...
-
エディットコントロールのイベ...
-
個々の関数について継承してい...
-
WindowsAPIのリストビューの...
おすすめ情報