Form間を[Tab][Shift+Tab]で移動するには


ひじり  URL  2004-02-26 14:12:32  No: 82303  IP: [192.*.*.*]

複数あるFormにおいて

Form間を[Tab]キーまたは、[Shift+Tab]にて移動を考えています。
具体的にはFormAの最後からTabにてFormBの先頭に移動
このときAを非表示、Bを表示にします
逆にBの先頭からShift+TabにてAの最後に移動します
このときもBを非表示、Aを表示します

下記のような案はあるのですが、
  ・ダミー的なコントロールを作成しGotFocusにて処理する
もっと、スマートな方法はないでしょうか?

-----
  環境:Windows全般
  開発:VisualBasic6.0(SP5)

編集 削除
kara  2004-02-27 13:59:03  No: 82304  IP: [192.*.*.*]

スマートかどうかはわかりませんが

・サブクラス化しWM_KEYDOWNを処理する
・キーボードフックで処理する

という方法はどうでしょうか?

編集 削除
ひじり  URL  2004-03-01 19:13:55  No: 82305  IP: [192.*.*.*]

ありがとうござます。

> ・サブクラス化しWM_KEYDOWNを処理する
-----
サブクラスはフォーカス取得時に動作しますよね?
どこにフォーカスがあっても、Tabをとるには

> ・キーボードフックで処理する
しかないのでしょうか???

フックの良いサンプルとかありますか?

編集 削除
たかみちえ  URL  2004-03-01 19:55:45  No: 82306  IP: [192.*.*.*]

複数のフォームに対して処理をするとなると、フックを入れた方がいいような気がします。

  さて、サンプルといっても、Googleで検索してみても、グローバルフックについてしか載っていませんね…。
グローバルフックはDLLを作らなければならないため、結局「VBの」と限定すると、サンプルは見つかりませんでした。

  言語違いですが
http://homepage2.nifty.com/Mr_XRAY/
こちらにあるHalbowさんの資料館 四章あたりに、ウィンドウフックの基本的な流れが載っていますね、
わかりやすかったので、参考にはなると思います。

編集 削除
kara  2004-03-02 11:02:37  No: 82307  IP: [192.*.*.*]

たかみちえさんの所でも十分かとおもいますが
こちらも参照してみてください
VBでのローカルフックについてのっています
http://www.technoproducts.co.jp/win/

> サブクラスはフォーカス取得時に動作しますよね?
> どこにフォーカスがあっても、Tabをとるには
そうか先にIsDialogMessageかなんかで処理されてたか
まぁ考えたら当たり前のこと・・・

編集 削除