Функция 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. Укажите pdtInner , только если созданный объект данных должен поддерживать дополнительные форматы буфера обмена FORMATETC , выходящие за рамки форматов по умолчанию, назначенных при создании. Кроме того, можно обеспечить поддержку заполнения созданного объекта данных с помощью форматов буфера обмена, отличных от форматов буфера обмена по умолчанию, путем вызова метода IDataObject::SetData и указания формата в структуре FORMATETC, переданной в параметре pFormatetc.
[in] riid
Тип: REFIID
Ссылка на IID интерфейса, извлекаемого через ppv. Это должно быть IID_IDataObject.
[out] ppv
Тип: void**
При успешном выполнении этого метода содержит указатель интерфейса IDataObject , запрошенный в riid.
Возвращаемое значение
Тип: HRESULT
Если эта функция завершается успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT .
Комментарии
Эта функция обычно вызывается при реализации метода IShellFolder::GetUIObjectOf. При запросе указателя интерфейса IID_IDataObject идентификатора интерфейса (с помощью параметра riid) реализующий объект может в ответ вернуть указатель интерфейса на объект, созданный с помощью SHCreateDataObject .
Эта функция поддерживает формат буфера обмена CFSTR_SHELLIDLIST (также известный как HIDA), а также универсальную поддержку произвольных форматов буфера обмена через IDataObject::SetData. Дополнительные сведения о форматах буфера обмена см. в разделе Форматы буфера обмена оболочки.
Новый объект данных предназначен для использования в таких операциях, как перетаскивание, в которых данные хранятся в буфере обмена в заданном формате.
Мы рекомендуем использовать макрос IID_PPV_ARGS , определенный в Objbase.h, для упаковки параметров riid и ppv . Этот макрос предоставляет правильный IID на основе интерфейса, на который указывает значение в ppv, что исключает возможность ошибки кода в riid , которая может привести к непредвиденным результатам.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | shlobj_core.h (включая Shlobj.h) |
DLL | Shell32.dll |
Набор API | ext-ms-win-shell-shell32-l1-2-2 (представлено в Windows 10 версии 10.0.14393) |