SHCreateDataObject 函数 (shlobj_core.h)
在父文件夹中创建数据对象。
语法
SHSTDAPI SHCreateDataObject(
[in, optional] PCIDLIST_ABSOLUTE pidlFolder,
[in] UINT cidl,
[in, optional] PCUITEMID_CHILD_ARRAY apidl,
[in, optional] IDataObject *pdtInner,
[in] REFIID riid,
[out] void **ppv
);
参数
[in, optional] pidlFolder
类型: PCIDLIST_ABSOLUTE
指向 ITEMIDLIST 的指针 (包含数据对象的父文件夹的 PIDL) 。
[in] cidl
类型: UINT
apidl 参数中指定的文件对象或子文件夹的数目。
[in, optional] apidl
类型: PCUITEMID_CHILD_ARRAY
指向常量 ITEMIDLIST 结构的指针数组,每个结构唯一标识相对于父文件夹的文件对象或子文件夹。 每个项标识符列表必须恰好包含一个 SHITEMID 结构,后跟一个终止零。
[in, optional] pdtInner
类型: IDataObject*
指向接口 IDataObject 的指针。 此参数可以为 NULL。 仅当创建的数据对象需要支持创建时分配的默认格式以外的其他 FORMATETC 剪贴板格式时,才指定 pdtInner。 或者,通过调用方法 IDataObject::SetData 并在参数 pFormatetc 中传递的 FORMATETC 结构中指定格式,支持使用非默认剪贴板格式填充创建的数据对象。
[in] riid
类型: REFIID
对要通过 ppv 检索的接口的 IID 的引用。 这必须IID_IDataObject。
[out] ppv
类型: void**
此方法成功返回时,包含 riid 中请求的 IDataObject 接口指针。
返回值
类型: HRESULT
如果此函数成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。
注解
此函数通常在实现方法 IShellFolder::GetUIObjectOf 时调用。 当使用参数 riid) (请求接口 ID IID_IDataObject的接口指针时,实现者可以在响应中使用 SHCreateDataObject 创建的对象上返回接口指针。
此函数支持 CFSTR_SHELLIDLIST (也称为 HIDA) 剪贴板格式,并且通过 IDataObject::SetData 对任意剪贴板格式具有通用支持。 有关剪贴板格式的详细信息,请参阅 Shell 剪贴板格式。
新的数据对象用于拖放等操作,其中数据存储在剪贴板中,具有给定格式。
建议使用 objbase.h 中定义的 IID_PPV_ARGS 宏来打包 riid 和 ppv 参数。 此宏基于 ppv 中值指向的接口提供正确的 IID,这消除了可能导致意外结果的 riid 编码错误的可能性。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | shlobj_core.h (包括 Shlobj.h) |
DLL | Shell32.dll |
API 集 | Windows 10版本 10.0.14393 中引入的 ext-ms-win-shell-shell32-l1- (2-2) |