将焦点明确设置到 CMFCRibbonEdit

Set focus explicitly to CMFCRibbonEdit

我正在尝试在我的应用程序的功能区栏上创建一个搜索框。 它应该在树控件中搜索给定的文本,点击 Enter 按钮,但不会丢失它的 focus/selection。 目前,当我按下回车键时,它失去了焦点,并让用户再次点击该搜索框以继续。

我的搜索框是一个 CMFCRibbonEdit 控件。

有人可以帮忙吗?

提前致谢。

遇到了同样的问题,解决的有点蛋疼。如果您查看 CMFCRibbonEdit 的源代码,您会看到它有一个受保护的成员 CMFCRibbonRichEditCtrl* m_pWndEdit; 在内部,功能区代码使用m_pWndEdit->SetFocus(); 将焦点设置在编辑控件上。您可以使用

从 CMFCRibbonEdit 导出 class
class CMyRibbonEdit : public CMFCRibbonEdit
{
public:
    void SetFocus()
    {
        m_pWndEdit->SetFocus();
    }
};

但它有问题。值得注意的是,设置焦点会调用编辑 window 的命令处理程序,因此如果您从该函数调用 SetFocus,您可能会遇到递归和堆栈错误。