IShellFolder::GetUIObjectOf 方法 (shobjidl_core.h)

获取一个 对象,该对象可用于对指定的文件对象或文件夹执行操作。

语法

HRESULT GetUIObjectOf(
  [in]      HWND                  hwndOwner,
  [in]      UINT                  cidl,
  [in]      PCUITEMID_CHILD_ARRAY apidl,
  [in]      REFIID                riid,
  [in, out] UINT                  *rgfReserved,
  [out]     void                  **ppv
);

参数

[in] hwndOwner

类型:HWND

所有者窗口的句柄,客户端在显示对话框或消息框时应指定该句柄。

[in] cidl

类型: UINT

apidl 参数中指定的文件对象或子文件夹的数目。

[in] apidl

类型: PCUITEMID_CHILD_ARRAY

指向 ITEMIDLIST 结构的指针数组的地址,每个结构都唯一标识相对于父文件夹的文件对象或子文件夹。 每个项标识符列表必须恰好包含一个 SHITEMID 结构,后跟一个终止零。

[in] riid

类型: REFIID

对要通过 ppv 检索的接口的 IID 的引用。 这可以是可为项创建的任何有效接口标识符。 Shell 使用的最常见标识符列在此引用末尾的注释中。

[in, out] rgfReserved

类型: UINT*

保留。

[out] ppv

类型: void**

当此方法成功返回时,包含 riid 中请求的接口指针。

返回值

类型: HRESULT

如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。

注解

如果 cidl 大于 1,则 IShellFolder::GetUIObjectOf 实现应成功,前提是它可以为 apidl 中指定的所有项创建一个对象。 如果实现无法为所有项创建一个对象,则此方法将失败。

以下是 Shell 在从此方法请求接口时使用的最常见接口标识符。 该列表还指示对于请求的接口, cidl 是否可以大于 1。

接口标识符 允许的 cidl
IContextMenu cidl 参数可以大于或等于 1。
IContextMenu2 cidl 参数可以大于或等于 1。
IDataObject cidl 参数可以大于或等于 1。
IDropTarget cidl 参数只能是一个。
IExtractIcon cidl 参数只能是一个。
IQueryInfo cidl 参数只能是一个。
 

建议使用 objbase.h 中定义的 IID_PPV_ARGS 宏打包 riidppv 参数。 此宏根据 ppv 中的 值指向的接口提供正确的 IID,这消除了 riid 中可能导致意外结果的编码错误的可能性。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 shobjidl_core.h (包括 Shobjidl.h)
DLL Shell32.dll (4.0 或更高版本)

另请参阅

IShellFolder

IShellFolder2