【发布时间】:2019-06-12 18:08:39
【问题描述】:
我的同事在 Linux 下创建了一个 Qt 小部件,他将其封装到一个 ActiveX 控件中,这样我就可以在我的 Win 应用程序 UI 中使用它。我在我的 Visual Studio 工具箱中注册并添加了该 ActiveX 控件,并添加到我的 win 表单中。
一切都很好,但是当启动我的表单并单击 TAB 时,它会将焦点传递给 ActiveX 控件,然后传递给 win 表单上的其他控件,但是 TAB 不会进入 ActiveX 控件以在ActiveX 控件,它本身由一些其他控件组成。
如何使制表位在 ActiveX 控件中发生,这样我也可以在 ActiveX 控件中从一个控件切换到另一个控件?有什么已知的方法吗?
【问题讨论】:
-
击键发生的事情是在 AxHost 包装器和控件之间协商的。你需要看看控件的 IOleInPlaceActiveObject::TranslateAccelerator() 实现函数是做什么的,大概它说“你所有的基地都属于我们”,不管键是什么。