2012-03-18 18 views
2

CreateWindowを呼び出してウィンドウを作成し、2つの編集コントロールを追加しました。 編集コントロールにWS_TABSTOPスタイルが有効になっていました。テキストを変更することはできましたが、TABキーによるコントロール間のナビゲーションは機能しませんでした。ウィンドウ内のコントロールをTabキーで移動する方法は?

MSG msg; 
while (GetMessage(&msg, NULL, 0, 0)) 
{ 
    if (!msg.hwnd || !IsDialogMessage(msg.hwnd, &msg)) 
    { 
     TranslateMessage(&msg); 
     DispatchMessage(&msg); 
    } 
} 

残念ながら、動作しませんでしたTABでナビゲートし、編集コントロールが編集していなかった、とTABを押すことによって起こった唯一のものは、テキストの選択だった:

私は私のメッセージループにこのコードを置きます最初の制御の。誰か助けてくれますか?

+0

問題を示す完全で小さなプログラムを投稿してください。上記は間違っているようには見えませんが、おそらくそれは不必要です。 –

+0

@ Cheersandhth.-Alf 'CreateWindow'で作成されたウィンドウでは、' IsDialogMessage'の呼び出しが必要です。 –

答えて

5

IsDialogMessageに渡すウィンドウハンドルは、ナビゲートしたいダイアログのようなウィンドウです。tを受け取ったウィンドウを渡しています彼はおそらく編集コントロールであり、トップレベルのウィンドウではありません。

0

次の2つの基本的な選択肢があります。自分でタブ移動取り扱う他にあなたがDialogBox(またはDialogBoxExのようなその近親者のいずれかで起動します実際のダイアログ()の中にコントロールを配置、またはどちらかで

。後者の場合、tabが入力されたときに反応して、他のコントロールにフォーカスを設定する必要があります。WM_NOTIFYでこれを処理できるか、コントロールをサブクラス化する必要があるかは覚えていません。

+0

Raymond [そうでないと言う](http://blogs.msdn.com/b/oldnewthing/archive/2003/10/21/55384.aspx)。 – GSerg

関連する問題