SetConvertStg 函数 (ole2.h)

SetConvertStg 函数设置存储对象中的转换位,以指示对象在打开时要转换为新类。 可以通过调用 GetConvertStg 函数来检索设置。

语法

HRESULT SetConvertStg(
  LPSTORAGE pStg,
  BOOL      fConvert
);

参数

pStg

指向要在其中设置转换位的存储对象的 IStorage 指针。

fConvert

如果 为 TRUE,则设置 对象的转换位,以指示对象在打开时要转换。 如果 为 FALSE,则清除转换位。

返回值

有关可能的存储和流访问错误,请参阅 IStorage::CreateStreamIStorage::OpenStreamISequentialStream::ReadISequentialStream::Write 方法。

注解

SetConvertStg 函数确定包含对象中转换位的状态。 在将对象从一个类转换为另一个类的过程中,容器应用程序和服务器会调用它。 当用户通过“ 转换为 ”对话框 (指定容器通过调用 OleUIConvert 函数生成) 要转换对象时,容器必须执行以下步骤:

  1. 如果对象当前已加载,请卸载该对象。
  2. 调用 WriteClassStg 将新的 CLSID 写入对象存储。
  3. 调用 WriteFmtUserTypeStg 将新的用户类型名称和现有main格式写入存储。
  4. 调用 SetConvertStg ,并将 fConvert 参数设置为 TRUE ,以指示对象已标记为在下次加载时转换为新类。
  5. 在加载对象之前,调用 OleDoAutoConvert 来处理任何所需的对象转换,除非调用 OleLoad,后者在内部调用它。
如果对象是从存储对象初始化的,并且服务器是转换为操作的目标,则对象服务器应执行以下操作:
  1. 调用 GetConvertStg 函数以检索转换位的值。
  2. 如果设置了位,服务器将根据与新 CLSID 关联的格式从对象中读取数据。
  3. 当要求对象保存自身时,对象应使用对象的正常本机格式和用户类型调用 WriteFmtUserTypeStg 函数。
  4. 然后,对象应调用 SetConvertStg ,并将 fConvert 参数设置为 FALSE 以重置对象的转换位。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 ole2.h
Library Ole32.lib
DLL Ole32.dll

另请参阅

GetConvertStg