C++ 我想在EN_KILLFOCUS之后找出焦点在哪里?

C++ 我想在EN_KILLFOCUS之后找出焦点在哪里?,c++,windows,visual-studio,winapi,mfc,C++,Windows,Visual Studio,Winapi,Mfc,现在我已经这样构建了我的应用程序:它运行在互联网浏览器(IE、FireFox、Chrome等)的容器中。在我的程序中有一个非模态对话框,该对话框包含一个CEdit控件 这里是我的问题:当用户激活编辑控件以键入内容时,编辑控件获得焦点。当编辑控件失去焦点时,我必须检查输入是否有效。如果没有,我将显示一个带有 AfxMessageBox 。但现在我无法确定我的编辑控件是否在我自己的应用程序中丢失。因为编辑控件可能会通过很多方式失去焦点,例如,当用户关闭浏览器时,当用户打开文本程序时。在这些情况下,我

现在我已经这样构建了我的应用程序:它运行在互联网浏览器(IE、FireFox、Chrome等)的容器中。在我的程序中有一个非模态对话框,该对话框包含一个CEdit控件

这里是我的问题:当用户激活编辑控件以键入内容时,编辑控件获得焦点。当编辑控件失去焦点时,我必须检查输入是否有效。如果没有,我将显示一个带有

AfxMessageBox

。但现在我无法确定我的编辑控件是否在我自己的应用程序中丢失。因为编辑控件可能会通过很多方式失去焦点,例如,当用户关闭浏览器时,当用户打开文本程序时。在这些情况下,我将跳过失效检查

任何人都可以告诉我如何找到编辑控件失去焦点的方式。

调用GetFocus()并查看焦点是否已返回到线程中的另一个窗口

HWND hwndFocus = ::GetFocus();
if (hwndFocus != 0 && ::GetWindowThreadProcessId(hwndFocus, NULL) == ::GetCurrentThreadId())
{
    // focus still in our thread
}
调用GetFocus()并查看焦点是否返回到线程中的另一个窗口

HWND hwndFocus = ::GetFocus();
if (hwndFocus != 0 && ::GetWindowThreadProcessId(hwndFocus, NULL) == ::GetCurrentThreadId())
{
    // focus still in our thread
}