ダイアログの上にダイアログを貼り付いている以下の様な
アプリを作ってます。([1]上に[2]が貼り付けてあるダイアログです。)
┏━━━━━━━━━━━━┓
┃□ □ ★ [1] ┃
┃ ┏━━━━━┓ ┃
┃ ┃☆□□[2] ┃ ┃
┃ ┃ ★ ┃ ┃
┃ ┗━━━━━┛ ┃
┃☆ □ ▲ ┃
┗━━━━━━━━━━━━┛
ここで質問なのですが[1]★→[2]☆へタブオーダを遷移させる良い方法
ってありませんか?通常の設定だと[1]▲→[2]☆へ跳んでしまいます。
一応現在は、[1]のPretranslateMessageで「[1]★ならば[2]☆へ」と
[2]のPretranslateMessageで「[2]★ならば[1]☆へ」それぞれ飛ぶように
記述していますが、結局[1]▲で再度[2]☆へ跳んでしまいます。
また[2]の画面は複数パターン用意されており条件によって変わります。
[1]の画面は変化はないのですが、この方法しかないとなると、
全ての[2]の画面パターンに対して、[1]★から飛ぶように場合分けしないと
ならないのでしょうか?
ごちゃごちゃしてて申し訳ありません。どなたかアドバイス頂けると
ありがたいです。宜しくお願いいたします。(環境はWin2K+VC6です)
ダイアログのプロパティに「コントロール」というのが
ありますので、ダイアログ[2]のこれをチェックします。
(これはダイアログにコントロールのように振る舞うように要請します)
実行時に、ダイアログ[2]のタブオーダーを[1]★の次になるように移動します。
ダイアログ[2].SetWidowPos([1]★, ...);
PretranslateMessage()で自前で何かする必要はありません。
発想の転換で・・・
[1]の中のタブオーダーを下記の順番にしておく。
☆ □ ▲ □ □ ★
開いたとき、4番目のコントロール(元1番目)にフォーカスを移動しておく。