我有从MFC使用的VB6 ActiveX(例如MyActiveX
):
m_pControl = new CWnd;
m_pControl->CreateControl("MyActiveX.MainControl",
"",
WS_VISIBLE,
rc,
this,
5000,
NULL,
FALSE,
NULL);
当我删除一些未使用的函数或移动变量(未在VB ActiveX之外使用)时,VB6会警告打破兼容性。我选择破坏兼容性,但现在从MFC应用程序中无法正确显示VB6 ActiveX。
据我了解,断开兼容性将为接口和类型库创建新的UUID。只要我可以做一些事情让它再次工作,这很好,因为我使用字符串ProgID MyActiveX.MainControl
,我认为我的MFC应用程序不会受到影响。
修改
据我所知Resetting project compatibility in vb6,只要重建引用它的项目,就可以打破兼容性。但是从MFC,我只使用字符串MyActiveX.MainControl
来引用VB项目,所以我不明白为什么我应该重建我的MFC应用程序;甚至在重建我的C ++ MFC应用程序之后,VB ActiveX仍未正确显示。
VB6 ActiveX中只有两个函数实际上是从C ++ MFC端使用的。这就是为什么我删除/移动了一些仅在VB6 ActiveX中使用的其他函数和变量。所以我不确定为什么它不能正常显示
答案 0 :(得分:0)
没有。 VB6是对的。问题是关于您使用的接口,属性和事件。 这取决于您如何将Control集成到MFC中。只要所有DispIds(来自IDispatch接口的调度ID)都是稳定的,只要您使用的所有功能仍然可用,您就没有问题。
如果DispID正在改变,函数原型会发生变化,您将遇到问题。