楽天アフィリエイト

2015年12月8日火曜日

VB6.0 F10のショートカットキーの動作について

15年くらい前の記事ですでに解決されている問題だけど
はまってしまったのでメモとして

キーダウンやキーアップのイベントで
F10を使用する際に
KeyCode=0
とすることで,正常に動作するようになる


問題となっていた動作
F10を1度押すと,キーのイベントが発生するが
その後,別のキーを押しても反応しない。
再度F10を押すと,別のキーも使用できるようになる。


KeyCode=0でなぜ正常に動作するか明確な理由は不明


他の記事などみての推測

おそらくはF10のKeyCode(121)がAltキーとしても動作するらしい
Windowsの内部でAltキーを押されることで次のキー入力待ちのような状態が発生
(この状態中はキーの押下イベントはwindows側にとられる)
再度押すことでその状態が解除されると思う。

色々と動作確認をして理由がわかりました。

VB6.0のフォーム上でF10(KeyCode:121)を押すと
メニューバーにフォーカスを当てる処理のショートカットとして動作していました。
ただフォーム上にメニューバーを配置していないソフトだとなにも反応しません。

そのためKeyCode=0とすることでメニューバーへのショートカット機能を
無効にし,正常に使えるようになります。


(動作のテスト方法として,空のフォーム作成してF10押下後に
 矢印キーの↓を押せばメニューが表示されます。)