• 締切済み

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

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

みんなの回答

  • POCKET
  • ベストアンサー率0% (0/0)
回答No.1

ポップアップメニューでしたら PopupMenuメソッドを使えばAPI不要で楽ですよ(メニューコントロールを利用するので自由度は低いですが...)。 この方法だと何もしなくてもメニュー以外の部分をクリックすると自動的にキャンセルされます。 具体的な使い方はVBのヘルプをご覧下さい。 ※PopupMenuメソッドはVB6には標準で使えると思いますが、VB5やそれ以前のバージョンだと使えるかどうか未確認です。

関連するQ&A

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

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

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

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

  • javascriptでポップアップメニュー

    はじめまして。題記の件でつまっています。 画面上のメニュー表示項目にマウスカーソルを合わせると、その位置にサブメニューを表示させたいです。 サブメニュー表示時に実現したいことは以下の3点です。 1.サブメニューのHTMLは画面上に記述しておき、カーソルがメニュー表示項目にある場合のみvisibleにする 2.サブメニューはカーソルが別のメニュー表示項目に移動した場合には、別のメニュー表示項目上でサブメニューを出すようにし、メニュー表示項目以外にカーソルが移動した場合には、メニューを非表示にする 3.サブメニューの表示位置はマウスカーソルの位置にする <イメージ> /* メニュー部分*/ <ul> <li>メニュー表示項目1</li> ※1 <li>メニュー表示項目2</li> … </ul> /*サブメニュー部分*/ <div id="menu" class="hidden"> <div>サブメニュー1</div> <div>サブメニュー2</div> </div> ※1にカーソルをあてると、下のhidden項目をカーソル位置に表示する カーソル移動にあわせてメニューを追従させたり、メニュー領域以外の場合に非表示とすることができません。(つまりほとんどうまくいってないのですが・・・) どうかご教示いただけないでしょうか。よろしくお願いします。 ちなみに以下のサイト様を参考にさせていただいてますが、こちらはカーソル位置に表示ではなく固定位置にサブメニュー表示でした。 http://miyakekobo.fc2web.com/temp/total_pd104.html

  • ウィンドウ非表示に時に表示したポップアップメニューを閉じるには?

    質問させて頂きます。 現在C++にてWin32SDKを使用し開発を行っております そこで、メインウィンドウが非表示の時にポップアップメニューを表示するようにしているのですが 非表示の際、ホットキーを起因にポップアップメニューを表示すると ポップアップメニュー以外をクリックしても消えますが WM_TIMER等、一定時間経過時に表示した場合 ポップアップメニュー以外をクリックしても消えません 下記が一部コードを抜粋した物です case WM_CREATE: hMenu = CreatePopupMenu( ); AppendMenu( hMenu, MF_STRING, 0x01, TEXT("HOGE1") ); AppendMenu( hMenu, MF_STRING, 0x02, TEXT("HOGE2") ); return 0; case WM_HOTKEY: GetCursorPos( &pos ); SetForegroundWindow( hWnd ); TrackPopupMenu( hMenu, TPM_LEFTALIGN | TPM_BOTTOMALIGN, pos.x, pos.y, 0, hWnd, NULL ); return 0; case WM_TIMER: GetCursorPos( &pos ); SetForegroundWindow( hWnd ); TrackPopupMenu( hMenu, TPM_LEFTALIGN | TPM_BOTTOMALIGN, pos.x, pos.y, 0, hWnd, NULL ); return 0; ホットキーの設定と、タイマーの設定の処理を付随しておりませんが ホットキー、タイマーの処理は同じものです ポップアップメニューを表示の際、WM_INITMENUPOPUPからポップアップメニューをサブクラス化し WM_KILLFOCUS等のメッセージが来た際に破棄する処理を試しても上手く行きません この場合、マウスをグローバルフックしなければならないでしょうか? 極力フックは避けて解決したいと思っております。 ご教授の程よろしくお願いします。

  • メニューバーから選択できる全てのメニュー項目の一覧表示

    ご存知の方、教えてください。 メニューバーから選択できる全てのメニュー項目を、一覧表示表示したいと思っています。 例えば、メニューバーには、「ファイル」「編集」という2つのメニューがあり、「ファイル」メニューのサブメニューには、  開く  閉じる  終了 というメニュー項目が、「編集」メニューのサブメニューには、  切り取り  コピー  貼り付け というメニュー項目があるとします。 そして、「メニューの一覧表示」というボタンをクリックしたら、上記のメニュー項目を、  開く      切り取り  閉じる     コピー  終了      貼り付け というように、サブメニュー毎に、表示列を分けて表示させたいと思っています。 GetSubMenu関数で、メニューバーから各々のサブメニューのハンドルを取得し、TrackPopupMenu関数で各々のサブメニューを同時に、かつ、重ならないよう位置をずらしながら表示させようとしましたが、うまくいきませんでした。 上記以外に、各々のサブメニューを、同時に表示させる方法はあるのでしょうか? それとも、各々のサブメニューは同時に表示させることはできないのでしょうか? 以上、申し訳ありませんが、ご返答くださいますよう、よろしくお願いいたします。

  • ショートカットメニュー

    c言語でWINAPIをいじってプログラミングをしているのですが、ショートカットメニュー(右クリックメニュー)についてお聞きしたいことがあります。 エクスプローラであるフォルダを開いたとして、そこでファイルを選択し、右クリックをするとショートカットメニューが飛び出してきます。 このメニューを自分で作ったプログラムで表示させるにはどのようにしたらよいのでしょうか? また、そこに新たにアイテムを挿入することは可能ですか? どなたかご教授お願いします。 <環境> Windows Vista Visual C++ 2005 Express Edition

  • メニューがおかしいんです。

    正式な名前を知らないんですが、立ち上げると画面上部にメニュー(ファイル・編集・表示...とあるやつです。)がありますよね。そして、カーソルをその字にあわせて1回クリックするとメニューが表示されますよね。 ある日突然同様にクリックするとメニューが出るのですが、マウスのボタンを押さえたままにしないとメニューが消えてしまうようになってしまいました。OSは9.2です。どこをどうすればなおるでしょうか。

    • ベストアンサー
    • Mac
  • IEの右クリックメニューのショートカット?について教えてください。

     IEで右クリックしたとき出てくる各メニュー、例えば‘画像を印刷する(I)‘の(I)が後からインストールしたソフトのメニューにも割り当てられていて、キーボードで‘I‘を押してもカーソルがいったりきたりするだけで、私の願うショートカットの役割を果たしてくれず困っています。   解決法をご存知の方よろしくお願いします。

  • スタートメニューの無効なショートカット

    質問です。 私のPCはFMV DESKPOWER CE21C/Rなのですが、 メーカーのソフトの「@メニュー」をアンインストールした後に、ショートカットだけ残ってしまいました。なんとか消したいと思っています。 ショートカットの視覚的位置は、 XPスタイルのスタートメニューの右下のあたりです。 具体的には、(デフォルトの状態で)すべてのプログラム(P)の右、ログオフ(L)・終了オプション(U)の上に位置しています。 ショートカットをクリックしても、 "(パスとプログラム名)が見つかりません。名前を正しく入力したかどうか確認してから、やり直してください。(略)" とダイアログがでます。 右クリックで表示されるものは「@メニュー」という項目のみで、 削除など見当たらなく、実行すると上記のようなダイアログがでます。 エクスプローラでスタートメニューフォルダの中を見てみましたが、 それらしいショートカットは見つかりませんでした。 また、.lnkを検索しましたがこれも見つかりませんでした。 この項目を消すにはどうすればいいのでしょうか?

  • メニューが正しく表示されなくなりました

    Windows Vista Home Premium SP2 を使用しています。 先日IE7から誤ってIE8をインストールしてしまい、直ちにアンインストールをして 7に戻したのですが、それ以来、メニューバーおよびコンテキストメニュー(マウス 右ボタン)が正しく表示されなくなりました。 マウスクリックした時点では、底辺と右辺に影のみが表示されるだけで、内容が 表示されません。(画像参照) その後、カーソルを見えていないメニュー内に移動させるとカーソルの通過した エリアまでのメニューが表示されていきます。 IE8をアンインストールする以前は、正常に表示されており、現象が発生した前後 にソフトウエア等のインストール、アンインストールはIE以外心当たりがありません。 正しく表示させるためにはどうすればいいでしょうか? 解決策をご教授ください。