0

私はいくつかの編集コントロールを持つ CDialog ベースのダイアログ ボックスがある MS Visual C++ プロジェクトを持っています。ユーザーの現在のフォーカスを持つコントロールを強調表示したいと思います。これを実装するには、GetFocus() で現在フォーカスがあるウィンドウへのポインターを取得し、GetDlgCtrlID() でフォーカスされたコントロールの ID を取得します。

CWnd *pWnd=GetFocus();

idfocus=(pWnd->GetDlgCtrlID());

次に、これをメンバー関数 OnCtlColor で HBRUSH が設定されている現在のコントロールと比較します。

これは、PC で実行されている別のアプリケーションのウィンドウをクリックするまで問題なく動作します。Firefoxなど。その時点でアプリケーションがクラッシュします。

特定のダイアログ ボックスで、その特定のダイアログ ボックスのみにフォーカスがあるコントロールがある場合、それを見つける最良の方法は何ですか? または、同じアプリケーションのみに制限することもできます。

4

1 に答える 1

0

ダイアログ内のすべてのコントロールは、基本的にメイン ダイアログの子です。そのため、必要な操作を実行する前に、フォーカスされているコントロールがダイアログの子であるかどうか (GetParent() を使用できます) を最初に確認することで、制限を作成できます。

于 2010-11-05T08:40:15.803 に答える