gpt4 book ai didi

c++ - OLE:多个 OLE 对象的共享 IStorage?

转载 作者:行者123 更新时间:2023-11-28 01:58:00 45 4
gpt4 key购买 nike

我目前正在实现一个 IOleObject 接口(interface),以将我们软件的可视化数据嵌入到其他软件(如 PowerPoint)中。我们的软件创建测量数据的图形评估(图表等)。

目标是,最终用户可以双击嵌入的 OLE 对象以在我们的软件中对其进行编辑。数据将使用 IPersistStorage::Save/Load 中给定的 IStorage 接口(interface)进行存储。测量数据必须是嵌入的,而不是链接的。

我目前的解决方案工作正常,但问题是,嵌入的数据将每个 OLE 对象保存一次。在示例中,我们有 10 MB 的测量数据,最终用户将 50 个不同的测量数据图表嵌入到 PowerPoint 中,测量数据将在 PowerPoint 文件中嵌入 50 次(50 * 10 MB = 500 MB,虽然 10 MB每个 PowerPoint 文件就足够了)。

我的问题是整个容器是否存在任何共享的 IStorage 接口(interface)(?)或类似的接口(interface)?

IPersistStorage::Load/Save 中给定的 IStorage 接口(interface)仅取决于特定的嵌入式 OLE 对象。

如果我能告诉主机应用程序类似“PowerPoint,我的五十个 OLE 对象在那里共享那个 IStorage。请在 PPTX 文件中只保存一次”,那就太好了。

最佳答案

不,这就是 OLE 嵌入的工作方式。每个对象在容器中都有自己的存储空间。如果是同一个对象,同样的数据,为什么要嵌入50次呢?如果它是同一个对象,而您希望它位于演示文稿的不同页面上,为什么不嵌入第一个实例并为所有其余实例创建链接呢?这样可以节省存储空间。当然,如果删除第一个嵌入实例,所有链接将变为....

关于c++ - OLE:多个 OLE 对象的共享 IStorage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40529840/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com