OleSetAutoConvert 函数 (ole2.h)

指定一个 CLSID,以便在加载该类的对象时自动转换为其他类。

语法

HRESULT OleSetAutoConvert(
  [in] REFCLSID clsidOld,
  [in] REFCLSID clsidNew
);

参数

[in] clsidOld

要转换的对象类的 CLSID。

[in] clsidNew

应替换 clsidOld 的对象类的 CLSID。 此新 CLSID 替换 clsidOld 注册表中的任何现有自动转换信息。 如果此值CLSID_NULL,则会从注册表中删除 clsidOld 的任何现有自动转换信息。

返回值

此函数可以返回标准返回值E_INVALIDARG、E_OUTOFMEMORY和E_UNEXPECTED,以及以下值。

返回代码 说明
S_OK
已成功标记对象。
REGDB_E_CLASSNOTREG
CLSID 未在注册表中正确注册。
REGDB_E_READREGDB
从注册表读取时出错。
REGDB_E_WRITEREGDB
写入注册表时出错。
REGDB_E_KEYMISSING
无法从注册表中读取项。

注解

OleSetAutoConvert 将转到系统注册表,在 clsidOld 指定的 CLSID 下查找 AutoConvertTo 子项,并将其设置为 clsidNew。 此函数不会验证 clsidNew 的相应注册表项当前是否存在。 这些条目在注册表中显示为 CLSID 项的子项。

对象转换意味着对象的数据与新的 CLSID 永久关联。 自动转换通常在新版本的对象应用程序的安装程序中指定,因此,由其旧版本创建的对象可以自动更新为新版本。

例如,可能需要将使用早期版本的电子表格应用程序创建的电子表格转换为新版本。 早期版本中的电子表格对象具有与新版本不同的 CLSD。 对于需要自动更新的每个早期版本,可以在安装程序中调用 OleSetAutoConvert ,并指定旧版本的 CLSID 和新版本的 CLSID。 然后,每当用户从以前版本加载对象时,该对象都会自动更新。 若要支持对象的自动转换,支持转换的服务器必须准备好手动转换具有早期版本服务器格式的对象。 自动转换在内部依赖于此手动转换支持。

在设置所需的 AutoConvertTo 值之前,安装程序还应调用 OleSetAutoConvert 以删除新类的任何现有转换,方法是将新类指定为 clsidOld 参数,并将 clsidNew 参数设置为CLSID_NULL。

要求

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

另请参阅

AutoConvertTo

OleDoAutoConvert

OleGetAutoConvert