Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何卸载ActiveX';在不终止主应用程序以允许覆盖ocx的情况下恢复ocx?_C++_Mfc_Vb6_Activex_Visual C++ 6 - Fatal编程技术网

C++ 如何卸载ActiveX';在不终止主应用程序以允许覆盖ocx的情况下恢复ocx?

C++ 如何卸载ActiveX';在不终止主应用程序以允许覆盖ocx的情况下恢复ocx?,c++,mfc,vb6,activex,visual-c++-6,C++,Mfc,Vb6,Activex,Visual C++ 6,我在VB6中实现了ActiveX控件,并在MFC42应用程序中实例化 我在应用程序的左面板上有一个树视图结构,当选择树中的不同项目时,在右面板上相应地加载不同的ActiveX,以显示所选项目的详细信息 每当我想修改ActiveX的VB代码时,我都需要重新启动应用程序。这大大中断了开发流程,因为应用程序启动非常缓慢 在一些ActiveX中,我们有虚拟代码/数据,允许在Internet Explorer中执行ActiveX,这样加载速度更快,但并非所有ActiveX都有 我希望当我在树状视图中单击不

我在
VB6
中实现了
ActiveX
控件,并在
MFC42
应用程序中实例化

我在应用程序的左面板上有一个树视图结构,当选择树中的不同项目时,在右面板上相应地加载不同的
ActiveX
,以显示所选项目的详细信息

每当我想修改
ActiveX
VB
代码时,我都需要重新启动应用程序。这大大中断了开发流程,因为应用程序启动非常缓慢

在一些
ActiveX
中,我们有虚拟代码/数据,允许在Internet Explorer中执行
ActiveX
,这样加载速度更快,但并非所有
ActiveX
都有

我希望当我在树状视图中单击不同的项目时,会卸载以前的
ActiveX
,我可以用新版本覆盖它

如果ActiveX从未被实例化/显示,我可以在应用程序仍在运行时替换
ocx

我在互联网上搜索并在
ActiveX
上找到了,他们都建议正确的清理方法是:

m_pControl=new CWnd;
m_pControl->CreateControl(strControlProgid,
"",
可见,
rc,
这
5000,
无效的
假,,
无效);
// ...
m_pControl->DestroyWindow();
删除m_pControl;
我们已经使用此方法销毁了
ActiveX
s,但我仍然需要退出应用程序以覆盖
ocx

编辑:

或者,对于VC++6(使用MFC42),而不是中提到的
cofreeuniusedlibrariesex
;我可以使用
cofreeuniusedlibraries
,它将毫不延迟地用于单线程Apartment(STA)。

只要COM引用计数在您的应用程序中正确工作,您可以尝试使用
cofreeunsedlibrariesex

强制卸载不再使用的ActiveX DLL,前提是COM引用计数在您的应用程序中正常工作,您可以尝试使用
cofreeunsedlibrariesex
强制卸载不再使用的ActiveX DLL