如果应用程序 window 失去激活 c++,则绕过 OnFocus/GetFocus 事件的触发器

Bypass trigger of OnFocus/GetFocus event if the application window loses activation c++

我有一个接受字符串值的文本框。在 Focus 丢失时,它执行特定功能(比如功能 1)。但是即使我失去了对 window 的关注,这个 OnFocus 事件也会被触发。

假设我有以下代码:

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

  // if focus event execute function 1

}

现在我想检查一下应用程序 window 是否处于活动状态。仅当 Window 处于活动状态时,才应触发 OnFocus 事件。

我了解到使用 GetActiveWindow() 或 GetForegroundWindow() 通过 post "determine if the current window is the active window?(Whosebug)"

但是我发现很难进行此检查。你能通过一个例子帮助我理解,如何实施吗?

我尝试检查焦点事件是否为 NULL。

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

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

}

这目前正在按预期工作。现在,如果更改当前 window.

,我可以绕过 OnFocus 事件