Метод IShellFolder::GetUIObjectOf (shobjidl_core.h)

Возвращает объект, который можно использовать для выполнения действий над указанными объектами файлов или папками.

Syntax

HRESULT GetUIObjectOf(
  [in]      HWND                  hwndOwner,
  [in]      UINT                  cidl,
  [in]      PCUITEMID_CHILD_ARRAY apidl,
  [in]      REFIID                riid,
  [in, out] UINT                  *rgfReserved,
  [out]     void                  **ppv
);

Parameters

[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 может быть больше или равен одному.
IContextMenu2 Параметр cidl может быть больше или равен одному.
IDataObject Параметр cidl может быть больше или равен одному.
IDropTarget Параметр cidl может быть только одним.
IExtractIcon Параметр cidl может быть только одним.
IExtractImage Параметр cidl может быть только одним.
IQueryInfo Параметр cidl может быть только одним.
 

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

Требования

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

См. также

IShellFolder

IShellFolder2