分类: C/C++
2008-08-07 17:41:21
持续性接口 | 简要说明 | |
IPersist | 所有持续性接口的根,下面的接口大多从它派生出来。这个接口很简单,只有一个函数 GetClassID()它返回组件的
CLSID 号,以便调用者能保存这个号为将来 CoCreateInstance()
启动组件用。 实现这个函数也很简单,只要返回你组件中的 CLSID_XXX 即可,或者比较省事的方法是返回 GetObjectCLSID() 。 |
|
IPersistStream |
派生自 IPersist,并增加了4个函数,从流(IStream)中读写组件属性信息。 |
|
IsDirty() | 组件内部属性是否发生了变化。为调用者是否需要保存信息提供依据 | |
Load() | 从 IStream 中读入信息,初始化组件属性 | |
Save() | 把属性信息保存到 IStream 中 | |
GetSizeMax() | 返回信息尺寸,以便调用者事先开辟空间 | |
IPersistStreamInit | 派生自
IPersistStream,并再增加了一个函数 InitNew()
用来完成一个默认的组件属性初始化。 这个持续性接口是最常用的,本文示例中就实现了该接口。 |
|
IPersistMemory | 和 IPersistStreamInit 类似,但使用的是内存块,而不是大小可变化的 IStream 流。 | |
IPersistStorage | 和 IPersistStream 类似,但保存属性信息使用的是存储 IStorage,一个 IStorage 中可以有多个 IStream。 | |
IPersistFile | 和 IPersistStream 类似,但存储介质为文件。 | |
IPersistPropertyBag | 使用属性包(属性名、属性值)的文本方式保存信息。在 IE 浏览器中,HTML 嵌入 ActiveX
控件通常使用这个方法。 在 HTML 中插入控件, 这样的形式你应该见过吧?! 在下一回的文章中,我们介绍这个接口。因为在 ActiveX 中,它太常用了。 |
|
IPersistPropertyBag2 | 扩展了 IPersistPropertyBag 接口。提供了更丰富一些的属性管理用函数。 | |
IPersistMoniker | 用于命名(moniker)存储和读取状态的持续性接口。 | |
IPersistHistory | 运行于 IE 上,想在用户浏览 WEB 页面时存储和读取状态的持续性接口。 |