1

これで、アプリケーションを次のようにビルドしました。インターネット ブラウザ (IE、FireFox、Chrome など) のコンテナで実行されます。私のプログラムにはモードレス ダイアログがあり、ダイアログには 1 つの CEdit コントロールが含まれています。

これが私の問題です。ユーザーが編集コントロールをアクティブにして何かを入力すると、編集コントロールがフォーカスを取得します。エディット コントロールがフォーカスを失ったら、入力が有効かどうかを確認する必要があります。そうでない場合は、モデル ダイアログを表示します。

AfxMessageBox

. しかし、自分のアプリケーションで自分の編集コントロールが失われるかどうかを判断できません。編集コントロールは、ユーザーがブラウザーを閉じたとき、ユーザーがテキスト プログラムを開いたときなど、多くの手段でフォーカスを失う可能性があるためです。これらの場合、無効化チェックをスキップします。

編集コントロールがフォーカスを失う方法を見つける方法を誰でも教えてくれます。

4

1 に答える 1

1

GetFocus()を呼び出して、フォーカスがスレッド内の別のウィンドウに戻ったかどうかを確認します。

HWND hwndFocus = ::GetFocus();
if (hwndFocus != 0 && ::GetWindowThreadProcessId(hwndFocus, NULL) == ::GetCurrentThreadId())
{
    // focus still in our thread
}
于 2012-08-16T08:54:13.530 に答える