将焦点明确设置到 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,您可能会遇到递归和堆栈错误。
我正在尝试在我的应用程序的功能区栏上创建一个搜索框。 它应该在树控件中搜索给定的文本,点击 Enter 按钮,但不会丢失它的 focus/selection。 目前,当我按下回车键时,它失去了焦点,并让用户再次点击该搜索框以继续。
我的搜索框是一个 CMFCRibbonEdit 控件。
有人可以帮忙吗?
提前致谢。
遇到了同样的问题,解决的有点蛋疼。如果您查看 CMFCRibbonEdit 的源代码,您会看到它有一个受保护的成员 CMFCRibbonRichEditCtrl* m_pWndEdit; 在内部,功能区代码使用m_pWndEdit->SetFocus(); 将焦点设置在编辑控件上。您可以使用
从 CMFCRibbonEdit 导出 classclass CMyRibbonEdit : public CMFCRibbonEdit
{
public:
void SetFocus()
{
m_pWndEdit->SetFocus();
}
};
但它有问题。值得注意的是,设置焦点会调用编辑 window 的命令处理程序,因此如果您从该函数调用 SetFocus,您可能会遇到递归和堆栈错误。