如何从 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三者有什么区别

如何将字节数组从 c# 传递到 MFC ActiveX

ATL ActiveX DLL 作为映射类型图像和数据加载两次

从附属 DLL 加载“特殊”MFC 控件

从 MFC DLL 显示对话框