• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:resource.h)

win32、VC++2005でresource.h内のコントロール色変更がうまくいかない

このQ&Aのポイント
  • win32、VC++2005で開発しております。resource.h内でコントロールの色を変更しようとした際に他のコントロールの色も変化してしまいました。Excelで一括変更する方法を試したが、コントロールの色が散らばってしまいました。
  • resource.hのID名は変更せずに複数のダイアログ画面を作成しているため、IDの重複が問題となっています。各画面ごとにIDを束ねることで見やすさを追求しています。
  • プログラム初心者のため、コントロールが膨大で見づらい状況です。見やすくするための方法やプログラムコーディングの基準についてアドバイスを求めています。

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

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★アドバイス ・致命的な間違いを指摘します。  WM_CTLCOLORSTATIC 内で BeginPaint、EndPaint は使ってはいけません。  その代わりに wParam を HDC にキャストすればデバイスコンテキストの  ハンドルがもらえます。分かっていますよね。  それなのに BeginPaint、EndPaint を記述しているのはおかしいです。 >ダイアログ画面を複数書いて値が重複するのは変だと思いますがどうなんですか?  ↑  思いません。  ダイアログAでボタン1があった場合 IDC_BUTTON1 を使います。  ダイアログBでもボタン1があった場合 IDC_BUTTON1 を使います。  IDC_BUTTON1 がダイアログで重複していても問題ないですし、変とも思いません。  ただし、タブコントロールなどに使うダイアログをコントロールとした場合は  各画面ごとに ID を束ねるようにしたり、重複しないようにします。  これはタブコントロールやプロパティシートのダイアログ・プロシージャを  1つに共通化したいために重複をしないためです。  (あまりにもコントロールの数が多い場合はダイアログ毎にプロシージャを用意します) ・リソースIDの値を変更した場合はリビルドしないといけません。  上手くリビルドできない場合は *.obj、*.exe などのファイルを削除してから  ビルド(コンパイル)を行います。ファイルを複数に分割している場合はこのようにします。

glee_sss
質問者

お礼

回答ありがとうございます。 ほとんどが何処かのサイトから参考にして書いたのですが、 確かにHDCにキャストしてあるのにおかしいですね。 リビルドすればうまく行きました。 > (あまりにもコントロールの数が多い場合はダイアログ毎にプロシージャを用意します) プロシージャを分ける場合はファイルも別にするのが普通なんですか? 別にしないと結局コードが長くて見ずらいですよね?

関連するQ&A