Tag: 持久存储

VB和C ++ ActiveX控件以不同的方式保存其信息,如何实现C ++ ActiveX控件replaceVB ActiveX?

背景 有一个由VB创build的旧的ActiveX控件。 我将这个ActiveX控件添加到我的Excel工作簿并设置了一些属性。 当这本书被保存时,这些属性被保存了。 具体来说,它们保存在使用VB代码中的PropertyBag的UserControl_WriteProperties函数中。 所以这些属性一直存在于工作簿中。 我的任务 我必须使用C ++创build一个新的ActiveX控件,以便与旧版本兼容。 我需要所有信息保存在我的旧Excel工作簿中的ActiveX控件中。 所以,我实现了IPersistPropertyBag到我的ActiveX控件。 我的期望是,当我打开我的旧Excel工作簿时,必须通过PropertyBag正确检索所有信息。 问题 我发现我的Excel工作簿中保存的信息是stream格式。 我可以实现IPersistStreamInit到我的新的ActiveX控件,但我不明白在我的Excel工作簿持续stream的格式。 所以,我无法检索我的Excel工作簿中保存的信息。 我不知道为什么这些信息是以Stream格式保存的,尽pipe它们是通过VB代码中的Propertybag保存的。 题 在这种情况下有没有办法让所有的信息在ActiveX控件中保留? 我已经find了两天,但我找不到方法。