メニューについて – プログラミング – Home

通知
すべてクリア

[解決済] メニューについて


tanaka
 tanaka
(@tanaka)
ゲスト
結合: 20年前
投稿: 6
Topic starter  

環境 VC++6.0 WINDOWS XP SP2

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


引用未解決
トピックタグ
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

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


返信引用
tanaka
 tanaka
(@tanaka)
ゲスト
結合: 20年前
投稿: 6
Topic starter  

申し訳ありませんが、私はオーナードローというものをよく知らないのですが、
どのようにすればメニューをオーナードローにすることができるのでしょうか?
よろしくお願いします。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

#解決策ではありません

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

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


返信引用
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

シャノンさんの言う通り、そういう概観がXPの標準ということのようですので…。

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


返信引用
tanaka
 tanaka
(@tanaka)
ゲスト
結合: 20年前
投稿: 6
Topic starter  

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


返信引用
tanaka
 tanaka
(@tanaka)
ゲスト
結合: 20年前
投稿: 6
Topic starter  

sugarさんの方法で、私の思っていたとおりにできそうです。
ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました