• ベストアンサー

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

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

  • ACCESSでファイル指定のダイアログを表示し、指定されたアドレスをテ

    ACCESSでファイル指定のダイアログを表示し、指定されたアドレスをテーブルに持ちたい。 ・フォームにボタンを配して、ボタンクリックでダイアログが表示 ・ダイアログより選択されたファイルアドレス(ファイル)が、フォーム上に表示 ・フォームを閉じる際に、レコードに更新したい。 ・再度(変更)フォームを開いた場合は、ダイアログのデフォルト表示は、テーブルの内容を考慮したい。 回答履歴を拝見し、いろいろ試したのですが、うまくいきません。 よろしく、お願いします。 バージョンACCESS 2010

  • VAB:メッセージボックスの色について

    VBAのコードの中で、  MsgBox "めっせーじ" と打つとメッセージボックスが表示されますが、 この時表示されるメッセージボックスの、  ・タイトルバー?の色(XPのデフォルトは青か)  ・タイトル(Microsoft Excelと出ている)  ・背景色(デフォルトは灰色?) を指定することはできますか? Windowsの「画面のプロパティ」だと全てのウィンドウの色が変わってしまいますが、 このコードを実行した時に表示するメッセージボックスだけ変更、という操作は可能でしょうか。

  • ペイントのソフト塗りつぶしで指定した色が違う

    マイクロソフトのペイントを使っていましたが、いつのまにか、全ての機能で、指定した色と違う(灰色系)になってしまします。 色々、試しましたが、解りません、マイクロソフトにもいって見ましたが、結局解りません。サポートセンターにも電話しましたが、有料との事、困りました。 知っている人いてくだされば、教えてくださいよろしくおねがいします。 なお、バージョンは、MEです。

  • ダイアログを自分の好きな位置に表示したい

    VCで簡単なプログラムを造っています。 ダイアログベースです。 EXE を実行した時に表示されるダイアログを、自分の指定した位置に 表示させる方法はあるでしょうか。 また、そのダイアログから DoModal関数で別のダイアログを表示する場合、 同様に、自分の指定した位置に表示させる方法はあるでしょうか。 デフォルトのままだと、1つ目のダイアログは画面の中央に、 DoModal関数で表示させたダイアログは、1つ目のダイアログの上に なります。

  • VS2013でTabControlが無い

    VisualStudio2013でMFCを使ってWindowsアプリケーションを開発しています ダイアログの中に「タブコントロール」を入れようと思ったのですが 「ツールボックス」内の「ダイアログエディター」の中にタブコントロールがありません。 とりあえず、別バージョンの時に作成したリソースから「タブコントロール」をコピペ することができ、コンパイルも通るのでプロジェクトの設定では無いと思います。 なんとか、「ダイアログエディター」内に表示させる方法はないでしょうか? おわかりになられる方がいらっしゃいましたら、よろしくお願いします。 補足: 「ツールボックス アイテムの選択」はいじってみました、「TabControl」にチェックがついている のですが、表示されません。

  • Firefoxのリンクの色の設定について

    Firefoxの配色設定でリンクの色だけ別の色に変えてみたいのですが、 ツール→オプション→コンテンツ→フォントと配色→配色設定→リンクの色 で色を変更してもデフォルトの色から変わりません。 これは仕様なのでしょうか? ちなみに「Webページが指定した配色を優先する」のチェックを外すと希望通りの色にリンクが変わるのですが、 合計で4色しか配置されなくなりページが見づらくなるので、Webページが指定した配色を優先しながらリンクの色だけを変える方法はないのでしょうか? その方法を知っている方が居たらぜひ教えてください! お願いします。 アドオンのテーマをデフォルトや他のテーマに変えてもこの症状は改善されませんでした。 表示したページの履歴は30日分残す設定にしています。 Firefoxのヴァージョン 3.0.15 OS windows XP SP2

  • しばらくお待ちくださいダイアログ

    よろしくお願いします。 web上で行うチェックプログラムを作成中なのですが、 チェック処理に時間がかかるため(~1分ぐらい)「しばらくお待ちください」のようなダイアログを表示させたいのですが可能でしょうか? 例えば、よくアプリなどをインストールする際に「次へ」を押して次の画面がアクティブになるまで「コピーしています、しばらくお待ちください」ダイアログを表示・・・みたいな感じのものです。 実際にはweb上で「チェック」ボタンを押して(=CGIが実行される)から、チェック画面結果のページがアクティブになるまで表示させるようにしたいです。 webサーバー・・・HP-UX web・・・IE CGI開発言語・・・Perl 開発端末・・・windows2000(Tera Term 使用) どなたか情報をお持ちの方いらっしゃいましたら、 よろしくお願いいたします。

  • Windows APIのGetOpenFileNameで呼び出せるダイアログを改造できないでしょうか?

    添付という形にすると勝手に再変換されて画像がかなり見づらくなってしまうようなので 添付ではなく別途アップへのリンクとさせてください。 今のところVC++2008EEを使ってWindows XPでアプリケーションを開発しています。 よほどメモリの断片化が進むような長時間使用しなければ .NET FrameWorkを完全に使用せず全部ネイティブで組んだほうが、実行時については 様々な面でパフォーマンスが良い場合が多いようなので できればマネージコード0でアプリケーションを完成させたいのですが Windows APIと.NET Frameworkにおいて、様々な場面で「デフォルトのデザインが違う」ようです。 簡単なものなら自作したりコモンコントロールにSendMessageやプロシージャをフックしたりでいいと思ったのですが オープン(セーブ)ファイルダイアログは、通常商用ソフトとかだと1から自作する事があるようなものなのでしょうか? http://www.geocities.jp/shank_long7_02/FileDialog/a.html こちらの画像の一番上がWindowsAPIのGetOpenFileNameで呼び出したダイアログで 真ん中がマネージなSystem::Windows::Formsの OpenFileDialogの場合で 一番下はPhotoshop CS3の別名保存用ダイアログです。 見たところこれは上がSaveFileDialogと一致してて、その下がカスタマイズされてるような感じですね。 現状のWindowsAPIを上記SendMessageやプロシージャのフックなどでちょこちょこっといじって.NET的なデザインにしたり、Photoshopのやつみたいにサイズを変えてその下に自分で好きな物を付け加えたりといったことは可能なのでしょうか? それとも、そういったことをやろうとした場合は1から作るか、混在させるかしかないのでしょうか?

  • Wordで、ユーザー設定で作った色を再利用できる?

    Wordで、ユーザー設定で作った色を、後で再利用するためにどこかに登録することはできますか。 単に文字の色を変えたいときは、過去にユーザー設定で色を変えた文字から書式をコピーしてくればいいですが、その色の文字だけを検索・置換したいときはどうすればいいのでしょう? 検索画面の「オプション」のフォント指定画面にはデフォルトの色しかないです。いちいち「ユーザー設定」で色を細かく指定するしかないのでしょうか?? かなり面倒です・・・ 何か方法があったら教えてください! バージョンはWord2000です。

  • Windows7のファイルを保存ダイアログが小さすぎる

    Windows7でファイルを保存するときに開かれる、 保存先やファイル名を指定するダイアログが小さくて不便です。 右下のリサイズ領域をドラッグすれば適宜変えられますが、 デフォルトの大きさを変えることはできないのでしょうか。

専門家に質問してみよう