環境 VC++6.0 WINDOWS XP SP2
現在、メニューのあるプログラムを作っているのですが、
表示されるメニューの文字の背景色が白色になっています。
また、メニューの項目をクリックすると
その項目の背景が全て白色になってしまいます。
このように、メニューの背景が白くならないようにする方法はあるのでしょうか?
私は、背景が普通のメニューのようにダイアログの背景色のままにしたいと思っていま
す。
どなたかいい方法をご存知の方、教えてください。
よろしくお願いします。
背景が白くなるのは、Windows XPで動かしているからではないでしょうか?
メニューをオーナードローすれば、動作環境によらず、独自の外観にすることができると思いま
す。
申し訳ありませんが、私はオーナードローというものをよく知らないのですが、
どのようにすればメニューをオーナードローにすることができるのでしょうか?
よろしくお願いします。
#解決策ではありません
「WinXP とはそういうものだ」と割り切って諦めるという道は無いでしょうか?
オーナードローを使えば、確かに灰色にすることはできるでしょう。
が、そのプログラムを WinXP で動かすと、そのプログラムだけが灰色で、他のあらゆる
プログラムのメニューの背景色は白です。
この不整合を嫌がるユーザがいるかもしれません。
WinXP において、メニューは白であることが自然なのです。
それでも灰色であることを追求したいのなら、止めはしません。
シャノンさんの言う通り、そういう概観がXPの標準ということのようですので…。
ただ、それはそれとして、メニューのオーナードローについては、
ModifyMenu関数を使って、メニュー1項目ごとにMF_OWNERDRAWを指定してください。
WM_MEASUREITEM、WM_DRAWITEMメッセージが飛んできますので、
それぞれの処理を行います。
まずは上記のいくつかのキーワードでヘルプ等調べてみるとよろしいかと。
ありがとうございました。
メニューが白くなっているのを不思議に思っていましたが、
それが当たり前なのなら、このままでもいいと思いました。
sugarさんの方法も一度試してみます。
sugarさんの方法で、私の思っていたとおりにできそうです。
ありがとうございました。