モードレスダイアログのタブ移動
メインループでメッセージを拾ってモードレスで表示した画面のTabキー制御を行いたいのですが、以下のプログラムでTabキーはコントロール間を移動しますが、移動の順番がタブオーダーと全く違います。
-------------------------------------------------
// メイン ウィンドウを作成して、実行します
Form1^ m_form = gcnew Form1();
m_form->Show();
msg.message = WM_CREATE;
while (msg.message != WM_QUIT)
{
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if (!IsDialogMessage( (HWND)m_form->Handle.ToPointer(), &msg ))
{
// メッセージが未処理の場合は処理を行う
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}
-------------------------------------------------
m_form->ShowDialog();
にしたり、上記ループを
Application::Run(gcnew Form1());
に変更するとちゃんとタブオーダーの順番で移動します。
訳有りで、ループ処理を変えたくはありません。
ネットで調べる限りタブ移動について「IsDialogMessage」を
入れるという疑問はあったのですが、それ以降の動作については
何も書かれていないようです。
上記ループの書き方でタブ移動がうまく行えない場合が
あるのでしょうか?
どなたかご存知でしたら教えてください
お礼
早速の回答ありがとうございます。 参考になりました。