带有MFC ActiveX控件的Tab键顺序

时间:2014-01-16 22:23:42

标签: c++ winforms mfc activex

我们有一个MFC ActiveX控件,在Visual Studio 2012中创建,具有CLR支持,通过类型为CWinFormsControl<T>的成员变量承载.NET UserControl。在创建MFC ActiveX控件时,创建并扩展CWinFormsControl以涵盖整个ActiveX控件。

除了TAB键之外,所有容器(包括我的VB6测试表单)都能很好地工作。 Tab键导航到每个项目,直到遇到我的ActiveX控件,此时焦点完全丢失,TAB键变得无用。必须使用鼠标进行恢复。

最终发现

BOOL CMyCtrl::PreTranslateMessage(MSG* pMsg)
{
    if (IsDialogMessage(pMsg))
    {
        return TRUE;
    }
    return COleControl::PreTranslateMessage(pMsg);
}
MFC ActiveX控件中的

似乎专注于.NET UserControl。但是,一旦进入.NET UserControl,焦点就会不断地在.NET UserControl的项目之间循环,永远不会离开。用户必须使用鼠标离开ActiveX / .NET控件,返回到应用程序的其余部分。

PreTranslateMessage是正确的做法吗?关于如何处理来自CWinFormsControl<T>对象的TAB的任何想法?

问候,

安德鲁

0 个答案:

没有答案