• ベストアンサー

ダイアログの色を指定するのは可能?

WindowsAPIでソフトを開発しています。 ダイアログを作ると、デフォルトだと灰色っぽい色が使われますよね。そして画面のプロパティでテーマを変えると、それに沿って変化しますよね。ダイアログだけでなく、ボタンやタブコントロールなどの色も、テーマやWindowsのバージョンによって変化します。 これらの色を、プログラム側から指定することは可能でしょうか?Windowsのバージョンが変わったり、ユーザーがテーマを変えても、同じ色のままにしたいのですが。

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

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

WinAPIでやるなら WndProcまたはDialogProcで適切なメッセージを処理しましょう WndProcならWM_ERASEBKGND、ダイアログならWM_CTLCOLORDLGになります ダイアログの背景の場合 case WM_CTLCOLORDLG:   hDC = (HDC)wParam;   GetClientRect( hDlg, &rc );   hOld = SelectObject( hdc, hbr );   PatBlt( hdc, 0, 0, rc.right, rc,bottom, PATCOPY );   SelectObject( hdc, hOld );   return (LRESULT)hbr; といった具合です

BearCave
質問者

お礼

「hbr」はブラシのハンドルですね。色付きブラシを作成してreturnしたら、その色になりました。ありがとうございました。

その他の回答 (1)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

個人的にやったことがないので、何とも言えませんが、 GetOpenFileNameのようなCOMDLG32.DLL系とSHBrowseForFolderには フック関数の指定が出来るので、もしかすると背景描画のメッセージを 横取りして、好みの色を塗ることができるかも知れません。 MessageBoxはフックの指定が無いので不可能でしょう。

BearCave
質問者

お礼

アドバイスありがとうございました。

関連するQ&A