C++ 带MFC ActiveX控件的选项卡顺序

C++ 带MFC ActiveX控件的选项卡顺序,c++,winforms,mfc,activex,C++,Winforms,Mfc,Activex,我们有一个MFC ActiveX控件,它是在Visual Studio 2012中创建的,支持CLR,它通过CWInformControl类型的成员变量托管.NET用户控件。在创建MFC ActiveX控件时,将创建并扩展CWInformControl,以覆盖整个ActiveX控件 除了TAB键之外,所有这些都可以在多个容器(包括我的VB6测试表单)中正常工作。tab键导航到每个项目,直到它遇到我的ActiveX控件,此时焦点完全丢失,tab键变得无用。必须使用鼠标进行恢复 最终,我发现 BOO

我们有一个MFC ActiveX控件,它是在Visual Studio 2012中创建的,支持CLR,它通过
CWInformControl
类型的成员变量托管.NET用户控件。在创建MFC ActiveX控件时,将创建并扩展
CWInformControl
,以覆盖整个ActiveX控件

除了TAB键之外,所有这些都可以在多个容器(包括我的VB6测试表单)中正常工作。tab键导航到每个项目,直到它遇到我的ActiveX控件,此时焦点完全丢失,tab键变得无用。必须使用鼠标进行恢复

最终,我发现

BOOL CMyCtrl::PreTranslateMessage(MSG* pMsg)
{
    if (IsDialogMessage(pMsg))
    {
        return TRUE;
    }
    return COleControl::PreTranslateMessage(pMsg);
}
在MFC中,ActiveX控件似乎集中在.NET用户控件中。但是,一旦进入.NET UserControl,focus就会在.NET UserControl的项之间不断循环,并且永不离开。用户必须使用鼠标离开ActiveX/.NET控件,返回到应用程序的其余部分

PreTranslateMessage
是正确的方法吗?关于如何处理
cwinformcontrol
对象之间的选项卡,您有什么想法吗

问候,

安德鲁