Метод 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 или более поздняя) |