【问题标题】:I want to find out where the focus belongs after EN_KILLFOCUS?我想在 EN_KILLFOCUS 之后找出焦点所在的位置?
【发布时间】:2012-08-16 04:28:15
【问题描述】:

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

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

AfxMessageBox

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

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

【问题讨论】:

    标签: c++ windows visual-studio winapi mfc


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-19
      • 1970-01-01
      • 2014-12-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-23
      • 2011-12-04
      相关资源
      最近更新 更多