2011-08-12 32 views
0

申し訳ありませんが、英語が非常に悪いです。アプリケーションとフォーカスの切り替えに問題があります

私はwinapiプログラムをC言語で書いていますが、問題があります。このプログラムには、メインウィンドウとNO DIALOGの子ウィンドウ(コントロール)があります。コントロールはメインウィンドウに直接添付されています。アプリケーションを別のアプリケーションに切り替えてもう一度やり直すと、フォーカスはメインウィンドウに設定され、切り替え前にフォーカスを所有するコントロールには設定されません。

私のメッセージループは次のとおりです。

while ((rGetMessage = GetMessage(&msg, NULL, 0, 0)) != 0 && rGetMessage != -1) 
{ 
    if(!IsDialogMessage(hwnd_principal, &msg)) 
    { 
     TranslateMessage(&msg); 
     DispatchMessage(&msg); 
    } 
} 

私のエラーは何ですか?

私はIsDialogMessage関数を使用しています(コントロールのTabキーのように)。

+0

なぜダイアログがない場合は、IsDialogMessageを呼び出していますか?これは提供された情報から推測できません。 –

答えて

0

アプリケーションに戻ったとき、Windowsは、デフォルトで、非アクティブ化されたときにフォーカスがあったウィンドウに関係なく、キーボードフォーカスをメインウィンドウに設定します。別の何かをしたい場合は、WM_ACTIVATEを処理し、SetFocus()を使用してフォーカスをコントロールに戻す必要があります。

関連する問題