我目前正在实现一个IOleObject接口,将我们软件的可视化数据嵌入到其他软件中,比如PowerPoint。我们的软件创建了测量数据(图表等)的图形评估。
目标是,最终用户可以双击嵌入式OLE对象,在我们的软件中编辑它。数据将使用给定的IStorage接口在IPersistStorage::Save/Load中存储。测量的数据必须嵌入,而不是链接。
我目前的解决方案运行良好,但问题是,每个OLE对象都会保存嵌入的数据一次。例如,我们有10 MB的测量数据,最终用户将测量数据的50个不同图表嵌入到PowerPoint中,测量数据将被嵌入PowerPoint文件中50次(50 * 10 MB = 500 MB,尽管每个PowerPoint文件10 MB就足够了)。
我的问题是,整个容器是否存在共享的IStorage接口(?)或者类似的东西?
IPersistStorage::Load/Save中给定的IStorage接口仅依赖于特定的嵌入式OLE对象。
如果我能告诉主机应用程序一些类似"PowerPoint,我的50个OLE对象在那里共享IStorage,请只在PPTX文件中保存一次“之类的话,那就太好了。
发布于 2016-11-10 14:57:19
不,这就是OLE嵌入应该工作的方式。每个对象在容器中都有自己的存储。如果它是同一个具有相同数据的对象,那么为什么它需要嵌入50次呢?如果它是同一个对象,并且希望它在演示文稿中的不同页面上,为什么不嵌入第一个实例并创建所有剩余的实例链接?这样可以节省存储空间。当然,如果删除第一个嵌入实例,所有链接都将转到.
https://stackoverflow.com/questions/40529840
复制相似问题