複数あるFormにおいて
Form間を[Tab]キーまたは、[Shift+Tab]にて移動を考えています。
具体的にはFormAの最後からTabにてFormBの先頭に移動
このときAを非表示、Bを表示にします
逆にBの先頭からShift+TabにてAの最後に移動します
このときもBを非表示、Aを表示します
下記のような案はあるのですが、
・ダミー的なコントロールを作成しGotFocusにて処理する
もっと、スマートな方法はないでしょうか?
-----
環境:Windows全般
開発:VisualBasic6.0(SP5)
スマートかどうかはわかりませんが
・サブクラス化しWM_KEYDOWNを処理する
・キーボードフックで処理する
という方法はどうでしょうか?
ありがとうござます。
> ・サブクラス化しWM_KEYDOWNを処理する
-----
サブクラスはフォーカス取得時に動作しますよね?
どこにフォーカスがあっても、Tabをとるには
↓
> ・キーボードフックで処理する
しかないのでしょうか???
フックの良いサンプルとかありますか?
複数のフォームに対して処理をするとなると、フックを入れた方がいいような気がします。
さて、サンプルといっても、Googleで検索してみても、グローバルフックについてしか載っていませんね…。
グローバルフックはDLLを作らなければならないため、結局「VBの」と限定すると、サンプルは見つかりませんでした。
言語違いですが
http://homepage2.nifty.com/Mr_XRAY/
こちらにあるHalbowさんの資料館 四章あたりに、ウィンドウフックの基本的な流れが載っていますね、
わかりやすかったので、参考にはなると思います。
たかみちえさんの所でも十分かとおもいますが
こちらも参照してみてください
VBでのローカルフックについてのっています
http://www.technoproducts.co.jp/win/
> サブクラスはフォーカス取得時に動作しますよね?
> どこにフォーカスがあっても、Tabをとるには
そうか先にIsDialogMessageかなんかで処理されてたか
まぁ考えたら当たり前のこと・・・