如何将ActiveX(Web浏览器托管)项目转换为静态库项目?

时间:2009-05-06 21:38:30

标签: c++ mfc activex atl static-libraries

我有一个ActiveX组件,它包含一个控件(嵌入在复合控件对话框窗口中的webbrowser控件),用于访问某些URL。 ActiveX组件访问URL可以在其他MFC或VB项目中使用。用法是注册ActiveX组件(使用regsvr32 cmd),然后使用“插入ActiveX控件”在对话框窗口中插入控件。

现在我计划将ActiveX组件转换为具有相同浏览器窗口和Web访问功能的静态库。我想知道怎么做?此外,浏览器窗口(在静态库中)如何在其他MFC项目中使用。是通过函数调用吗?有可用的示例项目吗?

我使用Microsoft .Net 2003作为开发工具。

非常感谢你。

1 个答案:

答案 0 :(得分:0)

我有点不清楚您认为可以将所有内容放在静态库中的程度。

这可能不会像你想象的那样直截了当。 VS / MFC / ATL中的向导和代码允许您在对话框中插入ActiveX控件,这为您做了很多工作。也就是说,它对ActiveX控件的站点性质做出了一些假设,例如消息泵如何工作,谁是所有者窗口,线程模型等等。在对话框中,这些是已知的。在另一个背景下,它们不是。

正在做你正在做的事情的正确方法是将其保留为ActiveX控件。也许如果您通过将其置于静态库中来说明您要解决的问题,我们可以提供其他选项。

WebBrowser ActiveX控件实际上是system32文件夹中shdocvw.dll库的包装器。 shdocvw.dll是IE的核心和灵魂(并且,通过扩展,大部分Windows资源管理器界面)。它完全基于COM,它有自己的加载库等规则。因此,网站(任何想要使用ActiveX控件的应用程序)确实需要对ActiveX / COM友好。