0

文字列値を取るテキストボックスがあります。フォーカスが失われると、特定の機能 (機能 1 など) を実行します。しかし、ウィンドウにフォーカスを失ったとしても、この OnFocus イベントがトリガーされます。

次のコードがあるとします:

classA::OnTextBoxFocus()
{
   CWnd* pCurrentFocus = GetFocus();

  // if focus event execute function 1

}

ここで、アプリケーション ウィンドウがアクティブかどうかを調べるために、チェックを入れたいと思います。ウィンドウがアクティブな場合にのみ、OnFocusイベントがトリガーされます。

投稿を通じて GetActiveWindow() または GetForegroundWindow() を使用することを学びました「現在のウィンドウがアクティブなウィンドウかどうかを判断しますか?(StackOverflow)

ただし、このチェックを入れるのは難しいと思います。例を通して、実装方法を理解するのを手伝ってもらえますか?

4

1 に答える 1

0

On focus イベントが NULL かどうかを確認してみました。

classA::OnTextBoxFocus()
{
   CWnd* pCurrentFocus = GetFocus();

  if(pCurrentFocus != NULL)
  // if focus event execute function 1

}

これは現在、期待どおりに機能しています。現在のウィンドウを変更すると、OnFocus イベントをバイパスできるようになりました。

于 2015-11-23T16:10:38.377 に答える