Функция 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 [только классические приложения]
целевая платформа Виндоус
Header shlobj_core.h (include Shlobj.h)
Library OneCore.Lib
DLL Shell32.dll
Набор API ext-ms-win-shell-shell32-l1-2-2 (представлено в Windows 10 версии 10.0.14393)

См. также

CIDLData_CreateFromIDArray