メニューについて

[戻る]
tanaka 2005/02/11(金) 17:00:25
環境 VC++6.0 WINDOWS XP SP2

 現在、メニューのあるプログラムを作っているのですが、
表示されるメニューの文字の背景色が白色になっています。
また、メニューの項目をクリックすると
その項目の背景が全て白色になってしまいます。
このように、メニューの背景が白くならないようにする方法はあるのでしょうか?
私は、背景が普通のメニューのようにダイアログの背景色のままにしたいと思っていま
す。
どなたかいい方法をご存知の方、教えてください。
よろしくお願いします。

sugar 2005/02/12(土) 02:04:06
背景が白くなるのは、Windows XPで動かしているからではないでしょうか?
メニューをオーナードローすれば、動作環境によらず、独自の外観にすることができると思いま
す。

tanaka 2005/02/12(土) 18:57:10
申し訳ありませんが、私はオーナードローというものをよく知らないのですが、
どのようにすればメニューをオーナードローにすることができるのでしょうか?
よろしくお願いします。

シャノン 2005/02/12(土) 20:05:06
#解決策ではありません

「WinXP とはそういうものだ」と割り切って諦めるという道は無いでしょうか?
オーナードローを使えば、確かに灰色にすることはできるでしょう。
が、そのプログラムを WinXP で動かすと、そのプログラムだけが灰色で、他のあらゆる
プログラムのメニューの背景色は白です。
この不整合を嫌がるユーザがいるかもしれません。
WinXP において、メニューは白であることが自然なのです。

それでも灰色であることを追求したいのなら、止めはしません。

sugar 2005/02/13(日) 00:26:02
シャノンさんの言う通り、そういう概観がXPの標準ということのようですので…。

ただ、それはそれとして、メニューのオーナードローについては、
ModifyMenu関数を使って、メニュー1項目ごとにMF_OWNERDRAWを指定してください。
WM_MEASUREITEM、WM_DRAWITEMメッセージが飛んできますので、
それぞれの処理を行います。
まずは上記のいくつかのキーワードでヘルプ等調べてみるとよろしいかと。

tanaka 2005/02/13(日) 15:02:30
ありがとうございました。
メニューが白くなっているのを不思議に思っていましたが、
それが当たり前なのなら、このままでもいいと思いました。
sugarさんの方法も一度試してみます。

tanaka 2005/02/13(日) 18:18:54
[[解決]]
sugarさんの方法で、私の思っていたとおりにできそうです。
ありがとうございました。

古いスレッドには追加発言できません。