1

现在我已经像这样构建了我的应用程序:它在 Internet 浏览器(IE、FireFox、Chrome 等)的容器中运行。我的程序中有一个无模式对话框,该对话框包含一个 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 回答