Mfc 如何从URL初始化ActiveX控件?

Mfc 如何从URL初始化ActiveX控件?,mfc,activex,tags,Mfc,Activex,Tags,我在网页中嵌入了一个MFC ActiveX控件。此控件的某些参数非常大。我不知道编译时这些值是什么,但我知道一旦检索到,它们几乎肯定永远不会改变 目前,我嵌入了如下参数: <object name="MyActiveX"> <param name="param" value="<%= GetData() %>" /> </object> 我想这样做: <object name="MyActiveX"> <param

我在网页中嵌入了一个MFC ActiveX控件。此控件的某些参数非常大。我不知道编译时这些值是什么,但我知道一旦检索到,它们几乎肯定永远不会改变

目前,我嵌入了如下参数:

<object name="MyActiveX">
  <param name="param" value="<%= GetData() %>" />
</object>

我想这样做:

<object name="MyActiveX">
  <param name="param" value="content/data" valuetype="ref" />
</object>

其思想是浏览器将从web服务器检索资源并将其传递给控件。浏览器自己的缓存将处理不必要的下载。不幸的是,ref参数不是这样工作的。浏览器只是将url传递给控件(这让我觉得毫无用处,但我离题了)


那么,有什么办法可以让这一切顺利进行吗?或者,在MFC中是否有一种简单的方法来指示控件的主机容器检索URI标识的资源?有更好的想法吗?

它在创建时真的需要数据吗

你能把它变成一个“初始”步骤吗

largeData = GetData();
MyActiveX.init( largeData );

实现IPersistStream或IPersistStreamInit接口,然后可以使用对象的数据属性指定内容,如:
所示。Internet Explorer将下载数据属性引用的文件,并通过其IPersistStream::Load接口将其传递给您。ATL为这些接口提供了默认实现,这些接口将填充控件的属性,MFC几乎肯定也是如此

没有。我可以编写一些代码来使用WinINet或类似工具检索数据,但我希望避免对ActiveX进行大量更改(代码库与其他项目共享,并且进行特定于ActiveX的更改很难看)。这似乎是正确的方向。存档属性似乎更合适,因为可能有多个项目要下载。在这种情况下IE是如何公开数据的?真的吗?如果你想下载多个项目,那么这将不是你想要的,IE只会下载一个文件(由data=)引用),所有其他参数都会被忽略。你真的应该自己下载一组参数。使用类似的方法获取当前托管的URL。如果您正在初始化控件的属性,那么IPersist的东西就可以工作了(看看它,MFC实现了默认的IPerist接口)。DoPropExchange是我当前从param标记获取参数的方式。我不确定它是否能从IPersistStream读取数据。也许方法就是将所有数据序列化为一次下载。谢谢你的帮助!