Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Возвращает объект, который можно использовать для выполнения действий над указанными объектами файлов или папками.
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 или более поздняя версия) |