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 宏打包 riid 和 ppv 参数。 此宏根据 ppv 中的 值指向的接口提供正确的 IID,这消除了 riid 中可能导致意外结果的编码错误的可能性。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | shobjidl_core.h (包括 Shobjidl.h) |
DLL | Shell32.dll (4.0 或更高版本) |