- ベストアンサー
ダイアログの色を指定するのは可能?
WindowsAPIでソフトを開発しています。 ダイアログを作ると、デフォルトだと灰色っぽい色が使われますよね。そして画面のプロパティでテーマを変えると、それに沿って変化しますよね。ダイアログだけでなく、ボタンやタブコントロールなどの色も、テーマやWindowsのバージョンによって変化します。 これらの色を、プログラム側から指定することは可能でしょうか?Windowsのバージョンが変わったり、ユーザーがテーマを変えても、同じ色のままにしたいのですが。
- みんなの回答 (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; といった具合です
その他の回答 (1)
- nda23
- ベストアンサー率54% (777/1415)
個人的にやったことがないので、何とも言えませんが、 GetOpenFileNameのようなCOMDLG32.DLL系とSHBrowseForFolderには フック関数の指定が出来るので、もしかすると背景描画のメッセージを 横取りして、好みの色を塗ることができるかも知れません。 MessageBoxはフックの指定が無いので不可能でしょう。
お礼
アドバイスありがとうございました。
お礼
「hbr」はブラシのハンドルですね。色付きブラシを作成してreturnしたら、その色になりました。ありがとうございました。