如何从 mfc dll 加载 ActiveX dll
Posted
技术标签:
【中文标题】如何从 mfc dll 加载 ActiveX dll【英文标题】:how to load ActiveX dll from mfc dll 【发布时间】:2014-02-23 03:58:09 【问题描述】:获得了第三方 ActiveX dll,其中包含风扇控制对话框。想从带有 API 的 MFC dll 访问 ACtiveX dll,以便能够打开控制对话框并访问 ActiveX 中的一些其他功能。这实际上容易吗?。应该在哪里调用什么资源?有什么例子吗?需要在没有周围的情况下连续记录温度。
【问题讨论】:
你能贴一些代码吗? 我想了解这是否完全可行?我在 msdn 中读到需要在 InitInstance 中调用 AfxEnableOleContainer()。 最初您问这是否“实际上很容易”。答案是:视情况而定。如果你知道自己在做什么,那就是。如果你不这样做,那就不是。考虑阅读How do I ask a good question? 并更新您的问题以满足本网站的期望。 请在下面阅读我自己的答案。 【参考方案1】:在微软网站上阅读了这么多之后,想出了一个 MFC dll,它的对话框使用了一个 ActiveX 控件。此外,编写了一个 MFC 和一个控制台应用程序,通过调用 dll 的 opendialog(),我看到对话框启动。我希望我不会造成任何内存泄漏。或在不知情的情况下导致任何资源(取消)分配错误。到目前为止,一切似乎都在发挥作用。
BOOL CDllApp::InitInstance()
CoInitialize(0);
AfxEnableControlContainer();
return CWinApp::InitInstance();
int CDllApp::ExitInstance()
CoUninitialize();
return CWinApp::ExitInstance();
In another class, in the same mfc dll, i do this.:
void CMyClass::opendialog()
AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
CMyDialog dlg;
dlg.DoModal();
【讨论】:
以上是关于如何从 mfc dll 加载 ActiveX dll的主要内容,如果未能解决你的问题,请参考以下文章
WTL强制资源从非mfc应用程序中的dll加载的方式? (我们使用的是 WTL/ATL,不是直接的 win32)
MFC 应用程序MFC ActiveXMFC dll三者有什么区别