Метод 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

Ссылка на IID интерфейса, извлекаемого через ppv. Это может быть любой допустимый идентификатор интерфейса, который можно создать для элемента. Наиболее распространенные идентификаторы, используемые оболочкой, перечислены в комментариях в конце этой ссылки.

[in, out] rgfReserved

Тип: UINT*

Зарезервировано.

[out] ppv

Тип: void**

При успешном выполнении этого метода содержит указатель интерфейса, запрошенный в riid.

Возвращаемое значение

Тип: HRESULT

Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Комментарии

Если cidl больше единицы, реализация IShellFolder::GetUIObjectOf должна быть успешной, только если она может создать один объект для всех элементов, указанных в apidl. Если реализация не может создать один объект для всех элементов, этот метод завершится ошибкой.

Ниже приведены наиболее распространенные идентификаторы интерфейса, которые оболочка использует при запросе интерфейса из этого метода. Список также указывает, может ли cidl быть больше единицы для запрошенного интерфейса.

Идентификатор интерфейса Допустимое значение cidl
IContextMenu Параметр cidl может быть больше или равен 1.
IContextMenu2 Параметр cidl может быть больше или равен 1.
Idataobject Параметр cidl может быть больше или равен 1.
IDropTarget Параметр cidl может быть только одним.
IExtractIcon Параметр cidl может быть только одним.
IQueryInfo Параметр cidl может быть только одним.
 

Мы рекомендуем использовать макрос IID_PPV_ARGS , определенный в Objbase.h, для упаковки параметров riid и ppv . Этот макрос предоставляет правильный IID на основе интерфейса, на который указывает значение в ppv, что исключает возможность ошибки кода в riid , которая может привести к непредвиденным результатам.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header shobjidl_core.h (включая Shobjidl.h)
DLL Shell32.dll (версия 4.0 или более поздняя)

См. также раздел

IShellFolder

IShellFolder2