OleRegEnumFormatEtc 函数 (ole2.h)

创建一个枚举对象,该对象可用于枚举 OLE 对象服务器已在系统注册表中注册的数据格式。 对象应用程序或对象处理程序在必须枚举这些格式时调用此函数。 自定义 DLL 对象应用程序的开发人员使用此函数来模拟默认对象处理程序的行为。

语法

HRESULT OleRegEnumFormatEtc(
  [in]  REFCLSID        clsid,
  [in]  DWORD           dwDirection,
  [out] LPENUMFORMATETC *ppenum
);

参数

[in] clsid

正在请求其格式的类的 CLSID。

[in] dwDirection

指示是枚举可传递给 IDataObject::GetData 的格式还是可传递给 IDataObject::SetData 的格式。 可能的值取自枚举 DATADIR

[out] ppenum

接收指向枚举对象的接口指针的 IEnumFORMATETC 指针变量的地址。

返回值

此函数在成功时返回S_OK。 其他可能的值包括以下内容。

返回代码 说明
E_OUTOFMEMORY
操作的内存不足。
REGDB_E_CLASSNOTREG
没有为类对象注册 CLSID。
REGDB_E_READREGDB
读取注册表时出错。
OLE_E_REGDB_KEY
注册表中缺少 DataFormats/GetSet 项。

注解

对象应用程序可以要求 OLE 为 FORMATETC 结构创建枚举对象,以通过以下两种方式之一枚举支持的数据格式。 一种方法是调用 OleRegEnumFormatEtc。 另一种是返回OLE_S_USEREG,以响应默认对象处理程序对 IDataObject::EnumFormatEtc 的调用。 OLE_S_USEREG指示默认处理程序调用 OleRegEnumFormatEtc。 由于 DLL 对象应用程序无法返回OLE_S_USEREG,因此它们必须调用 OleRegEnumFormatEtc ,而不是将作业委托给对象处理程序。 使用提供的 IEnumFORMATETC 指针指向 对象,可以调用标准枚举对象方法来执行枚举。

OleRegEnumFormatEtc 函数及其同级函数 OleRegGetUserTypeOleRegGetMiscStatusOleRegEnumVerbs 为自定义 DLL 对象应用程序的开发人员提供了一种方法,用于模拟 OLE 的默认对象处理程序在从注册表中获取有关对象的信息时的行为。 通过使用这些函数,可以避免编写自己的大量工作,以及直接在注册表中工作所固有的缺陷。 此外,你将获得这些函数的未来增强和优化,而无需自行编写代码。

要求

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

另请参阅

IDataObject::EnumFormatEtc

IEnumFORMATETC