Метод IShellFolder::GetDisplayNameOf (shobjidl_core.h)
Извлекает отображаемое имя для указанного объекта файла или вложенной папки.
Синтаксис
HRESULT GetDisplayNameOf(
[in] PCUITEMID_CHILD pidl,
[in] SHGDNF uFlags,
[out] STRRET *pName
);
Параметры
[in] pidl
Тип: PCUITEMID_CHILD
PIDL, однозначно идентифицирующий объект файла или вложенную папку относительно родительской папки.
[in] uFlags
Тип: SHGDNF
Флаги, используемые для запроса типа возвращаемого отображаемого имени. Список возможных значений см. в описании перечисленного типа SHGDNF .
[out] pName
Тип: STRRET*
При возврате этим методом содержит указатель на структуру STRRET , в которой возвращается отображаемое имя. Тип имени, возвращаемого в этой структуре, может быть запрошенным, но папка оболочки может возвращать другой тип.
Возвращаемое значение
Тип: HRESULT
Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .
Комментарии
Ответственность за освобождение ресурсов, выделенных этой функцией, лежит на вызывающем объекте.
Обычно pidl может ссылаться только на элементы, содержащиеся в родительской папке. PIDL должен быть одноуровневый и содержать ровно одну структуру SHITEMID , за которой следует завершающий ноль. Если вы хотите получить отображаемое имя элемента, который находится глубже, чем на один уровень от родительской папки, используйте SHBindToParent для привязки к непосредственной родительской папке элемента, а затем передайте одноуровневый PIDL элемента в IShellFolder::GetDisplayNameOf.
Кроме того, если флаг SHGDN_FORPARSING задан в uFlags , а флаг SHGDN_INFOLDER не задан, pidl может ссылаться на объект на любом уровне ниже родительской папки в иерархии пространства имен. Одновременно pidl может быть многоуровневым PIDL относительно родительской папки и содержать несколько структур SHITEMID . Однако это больше не поддерживается, и pidl теперь должен ссылаться только на один дочерний элемент.
Самый простой способ получить отображаемое имя из структуры, на которую указывает pName , — передать его в StrRetToBuf или StrRetToStr. Эти функции принимают структуру STRRET и возвращают имя. Вы также можете проверить элемент uType структуры и получить имя из соответствующего элемента.
Флаги, указанные в uFlags , являются подсказками о предполагаемом использовании имени. Они не гарантируют, что IShellFolder вернет запрошенную форму имени. Если эта форма недоступна, может быть возвращена другая форма. В частности, нет никакой гарантии, что имя, возвращаемое флагом SHGDN_FORPARSING , будет успешно проанализировано iShellFolder::P arseDisplayName. Существуют также некоторые сочетания флагов, которые могут привести к тому, что круговой путь GetDisplayNameOf/ParseDisplayName не возвращает исходный список идентификаторов. Это исключительное явление, но вы должны проверка, чтобы быть уверенным.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | shobjidl_core.h (включая Shobjidl.h) |
DLL | Shell32.dll (версия 4.0 или более поздняя) |