- ベストアンサー
シフトを使った隠れメニューを作るには?
みなさま、いつも助けていただいてありがとうございます。 よくEXCELなどで、シフトを押しながらプルダウンメニューをクリックすると、普段は出ていないメニューが見えるようになりますが、VB6でこれを実現する方法はありませんでしょうか? メニューエディタで作るとm1とかm2とか生成されますが、そのclickイベント発生時にSHIFTキーが押されているかどうかを判別してm13.visible=trueのようにすればいいと思うのですが、その判別方法がわかりません。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
WindowsAPIのGetKeyState()を使うのが簡単だと。 ちなみに、VK_SHIFTは&H10です。
その他の回答 (1)
- TAGOSAKU7
- ベストアンサー率65% (276/422)
SHIFT CTRL はメニューが表示中には拾えません。 これはVBだからと言うわけでなく、CでAPIでガチガチに書いても、同じくだと思います。 というのは、WindowsからはVK_SHIFTなどは送られているのですが、フォームをフックしても、情報が拾えないのです。メニューの表示中にキーイベントで、フォームで得る値はWM_ENTERIDLEだけです。 唯一考えられる方法としては、フォームをフックするのではなくOSをフックする方法ですが、かなりキツイッす。 私の個人の考えでは(逃げじゃなくて本心で)、、、 「SHIFTを押しながら選択すると機能が変わる」 のではなく 「SHIFTあり/なしでは、表示するメニューが違う」 といった方がスマートに思えます。
お礼
回答ありがとうございます。 確かにEXCELでは新しいメニューが現れるのではなく「コピー」が「画像のコピー」に変わるだけですね。 結局、別のボタンのシフト&クリックで隠しメニューを出現させる仕様にしました。
補足
ありがとうございます。SHIFTキーの取得はできました。 ただ、今度は「親メニューからはvisibleプロパティーを設定できません」というエラーが出るようになりました。 他の見えないボタンを作ったり、FUNCTIONを作ったりしてm13.visible=trueを実現したいのですが、それでも同じメッセージができます。 何かいい方法ないでしょうか?