在父文件夹中创建数据对象。
Syntax
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 时,通常会调用此函数。 当请求接口 ID 的接口指针IID_IDataObject(使用参数 riid),实现者可以在响应中使用 SHCreateDataObject 创建的对象上返回接口指针。
此函数支持 CFSTR_SHELLIDLIST (也称为 HIDA)剪贴板格式,还支持通过 IDataObject::SetData 对任意剪贴板格式的通用支持。 有关剪贴板格式的详细信息,请参阅 Shell 剪贴板格式。
新数据对象用于拖放等作,其中数据以给定格式存储在剪贴板中。
建议使用在 Objbase.h 中定义的 IID_PPV_ARGS 宏来打包 riid 和 ppv 参数。 此宏基于 ppv 中值指向的接口提供正确的 IID,从而消除了 riid 中编码错误可能导致意外结果的可能性。
要求
| Requirement | 价值 |
|---|---|
| 最低支持的客户端 | Windows Vista [仅限桌面应用] |
| 支持的最低服务器 | Windows Server 2008 [仅限桌面应用] |
| 目标平台 | Windows操作系统 |
| Header | shlobj_core.h (包括 Shlobj.h) |
| Library | OneCore.Lib |
| DLL | Shell32.dll |
| API 集 | ext-ms-win-shell-shell32-l1-2-2 (在 Windows 10 版本 10.0.14393 中引入) |