【问题标题】:GetFocus on a ComboBox in a dialogGetFocus 在对话框中的 ComboBox 上
【发布时间】:2012-03-21 01:40:08
【问题描述】:

我正在尝试在对话框中的 ComboBox 控件上使用 GetFocus(),但由于某种原因它不起作用。
即使我使用 SetFocus() 函数设置焦点,它也不起作用,但看起来它具有键盘焦点。

SetFocus(hKeysComboBox);
if (GetFocus() == hKeysComboBox) // This is false

也许是因为它在一个对话框中?我不知道,这看起来很简单。

【问题讨论】:

    标签: c++ windows winapi


    【解决方案1】:

    这是一个可编辑的组合吗?那些实际上包含一个子编辑控件,当您聚焦组合时,组合又聚焦子编辑控件(以便它可以接收管理键盘输入)。您可以使用 Spy++ 查看此父/子结构。

    所以要检查组合是否有焦点,您可以检查 GetFocus 的父级是否是组合。

    【讨论】:

    • 这个答案帮助了我,所以添加我的代码示例来演示实际需要的代码。 SetFocus(hKeysComboBox); CWnd* pWnd = GetFocus(); if (pWnd != NULL && pWnd->GetParent() == hKeysComboBox) // 现在是真的
    【解决方案2】:
    if (VC++)
    {
        use `tag order` property;
    }
    else
    {
        use WM_NEXTDLGCTL with SendMessage;
    }
    

    详情请见How to set focus in a dialog box

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-01
      • 2017-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多