• ベストアンサー

メニューにアイコンを付加するには?

Windows APIでプログラミングしています。右クリックが起きた時にLoadMenuでリソースからメニューを取り出し、TrackPopupMenuでポップアップメニューを表示するようにしています。 このメニューの項目の右横にアイコンを付けたいのですが、どうすればよいのでしょうか? また、項目の文字を太字にする方法も分かれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★アドアイス ・一番簡単な方法。  SetMenuItemBitmaps()関数を使います。  SetMenuItemBitmaps( hSubMenu, メニューID, MF_BYCOMMAND, hBitmap1, hBitmap2 );  hSubMenu…メニュー・ハンドル  hBitmap1…チェックされていないビットマップ・ハンドル  hBitmap2…チェックされたときのビットマップ・ハンドル ・これを使って綺麗にアイコンを表示するのは難しいです。  綺麗なアイコンを表示するにはメニューのオーナードローが必要です。  ネット検索すると多数見つかりますので調べてみて下さい。 >また、項目の文字を太字にする方法も分かれば教えてください。  ↑  ある特定の1つだけならSetMenuItemInfo()関数で MFS_DEFAULT フラグをつける。  複数のメニュー項目を太字にする場合はもうメニューのオーナードローを  行うしかありません。なお、MFS_DEFAULT を複数のメニュー項目に付けれますが、  通常は1つだけ設定すべきです。 リンク: http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_setmenuitembitmaps.asp http://wisdom.sakura.ne.jp/system/winapi/win32/win79.html

BearCave
質問者

お礼

どうやらSetMenuItemBitmaps関数はポップアップメニューには対応していないようなので、オーナードローの方法でやってみたいと思います。 太字にする方はMFS_DEFAULTフラグで解決しました。アドバイスありがとうございました。

関連するQ&A

  • ポップアップメニュー

    NotifyIconでタスクバーに呼び出したアイコンの上で右クリックをしたら、ポップアップメニューが表示させるように作りたいのですが、作り方が分かりません。(サイトなどを見たりしました。) 出きれば教えて頂きたいと思います。 *何をしたいのか↓ タスクトレイで表示されたアイコンを右クリックをするとポップアップメニューが出る。 ・環境 Microsoft Visual C++ SDK HINSTANCE hInst; POINT point; static HMENU hMenu,hSubMenu; /////////////////省略/////////////////// case WM_RBUTTONDOWN:  hMenu = LoadMenu(hInst,"MENUDATA");  hSubMenu = GetSubMenu(hMenu,0);  point.x = LOWORD(lParam);  point.y = LOWORD(lParam);  TrackPopupMenu(hSubMenu,TPM_LEFTALIGN,point.x,point.y,0,hWnd,NULL); break; これではうまくいかないのでご助言お願いします。

  • ポップアップメニューのカスタマイズについて

    ポップアップメニューのカスタマイズについて  ワードで文字列を選択し、右クリックするとポップアップメニューが表示される。そのメニューの内容をカスタマイズしたい。  ポップメニューでフォント、文字サイズ、太字、斜体文字などが選択できるようになっているが、それに下線、傍点などを加えたい。また不必要な文字色、蛍光ペン、段落などは削除したい。  カスタマイズの方法があればお教え願いたい。よろしくお願いします。 OS Windows 7 Word 2007 Atok 2008

  • ポップアップメニュー

    ポップアップメニューについて質問させて頂きます。 リストビュー上で右クリックしたときにポップアップメニューを表示させているのですが、このポップアップメニューの項目がクリックされた時のイベントの取り方が分かりません。 ご存知の方、宜しくお願いします。 環境はVisual Studio6.0 Windows2000です

  • タスクトレイのポップアップメニュー

    こんにちわ。 タスクトレイにアイコンを登録し、右クリックでポップアップメニューを表示しています。 そのポップアップを表示している状態でデスクトップを左クリックしてもメニューが消えないのはなぜでしょうか?ポップアップされたメニューをクリックしないとメニューが消えてくれません。 何かのイベントでメニューを消す処理をいれておくのでしょうか? どなたか宜しくお願いします。 (VB6 SP5で作成しました。)

  • WM_TIMERからポップアップメニューを閉じるには?

    質問させて頂きます。 現在C++にてWin32SDKを使用し開発を行っております そこで、メインウィンドウが非表示の時にもポップアップメニューを表示するようにしているのですが 非表示の際、ホットキーからポップアップメニューを表示すると ポップアップメニュー以外をクリックしても消えますが WM_TIMER等、一定時間経過時に表示した場合 ポップアップメニュー以外をクリックしても消えません WM_HOTKEYでは SetForegroundWindow関数でアクティブにした後に TrackPopupMenu関数でポップアップメニューを表示して 関係ない所をクリックされてもうまく消えます WM_TIMERでもWM_HOTKEYと同じ処理をしても上手くいきません タスクトレイの右クリックと同じく TrackPopupMenu関数の後にWM_NULLをポストしてもメニューは消えません 何か上手く解決出来る方法は無いでしょうか? どうぞよろしくお願いします。

  • ショートカットメニューについて

    TrackPopupMenu()APIと、GetCursorPos()APIなどを使って、カーソルの位置にメニューを表示することはできたのですが、表示した後にメニュー以外の場所をクリックしたら消す動作をさせたいのですが、どうしてもできません。 だれか教えてください。

  • ポップアップメニューがおかしいです。

    ポップアップメニューや右クリックメニューが透明に表示されています。見にくくてしょうがありません。だれか助けてください。。。。

  • スクリーンからはみ出ないポップアップ(win32api)

    win32apiでアプリケーションを作っています。 右クリックしたときに表示されるポップアップメニューがスクリーンからはみ出ないように、右クリックされた時にポップアップがはみ出るようならポップアップの位置を調整する、ということをしたいです。 その為には表示されるポップアップのサイズが分からないといけないのですが、ポップアップのサイズを得る方法はありますか?大体でやってしまってもあまり問題はないかもしれませんが。 回答よろしくお願いします。

  • autohotkeyのポップアップメニューについて

    autohotkeyを以下環境で使用しています。 OS: Windows7 64bit autohotkey: Ver 1.0.48.05 やりたい事: 通知領域にあるautohotkeyアイコンを右クリックして、 ポップアップメニューから"Reload This Script"を選びたい (添付画像を参照してください) 以下のようにスクリプトを組みました Ctrl+Alt+vにて起動 autohotkeyアイコンは、座標(1000, 800)にあるとします。 ^!v:: MouseClick, RIGHT, 1000, 800, , 5 Sleep, 1000 Send, r return 実行すると右クリックのポップアップメニューまでは表示されるのですが、 "Send, r"が実行されず、"Reload This Script"が選べません。 ※この状態で、手動で"r"キーを押すと、きちんと"Reload This Script"が実行されます 通知領域アイコンを右クリックして出てくるポップアップメニューにコマンドを通すのは、 "Send, r"ではなくて特別なコマンドが必要なのでしょうか? 以上、よろしくお願いいたします。

  • [タスクバー]に既定のアイコンが表示されない

    Win 7 Pro SP-1 のパソコンを使用しています。 デスクトップ上に置いた或るユーティリティをクリックしたら、タスクバー上にそのアイコンが表示されて、当該ユーティリティが起動していることが分かるようになっています。 タスクバー上のそのアイコンを右クリックして、ポップアップメニュー項目を選択して作業を進めてゆきます。 ところが、起動してもタスクバー上にアイコンが表示されないときが たまに発生します。このとき、デスクトップ上のアイコンをクリックしても「すでに起動しています」と表示されるばかりです。 このように、起動してもタスクバーに表示されない現象を防止する方法があれば教えてください。 ちなみに、パソコンを再起動すると当該現象はなくなります、今のところ。