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 结构的指针。 此结构中返回的名称类型可以是请求的类型,但 Shell 文件夹可能返回不同的类型。

返回值

类型: HRESULT

如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。

注解

调用方负责释放此函数分配的资源。

通常, pidl 只能引用父文件夹包含的项目。 PIDL 必须是单级,并且只包含一个 SHITEMID 结构,后跟一个终止零。 如果要检索距离父文件夹一个级别更深的项目的显示名称,请使用 SHBindToParent 与项的直接父文件夹绑定,然后将该项的单级 PIDL 传递到 IShellFolder::GetDisplayNameOf

此外,如果在 uFlags 中设置了SHGDN_FORPARSING标志,并且未设置SHGDN_INFOLDER标志,则 pidl 可以在命名空间层次结构中父文件夹下方的任何级别引用对象。 一次, pidl 可以是相对于父文件夹的多级 PIDL,并且可以包含多个 SHITEMID 结构。 但是,这不再受支持, pidl 现在应仅引用单个子项。

pName 指向的结构中检索显示名称的最简单方法是将其传递给 StrRetToBufStrRetToStr。 这些函数采用 STRRET 结构并返回名称。 还可以检查结构的 uType 成员,并从相应的成员检索名称。

uFlags 中指定的标志是有关该名称的预期用法的提示。 它们不保证 IShellFolder 将返回请求的名称形式。 如果该表单不可用,可能会返回其他表单。 具体而言,无法保证 IShellFolder::P arseDisplayName 成功分析SHGDN_FORPARSING标志返回的名称。 还有一些标志组合可能会导致 GetDisplayNameOf/ParseDisplayName 往返不返回原始标识符列表。 这种情况是例外,但应检查确定。

注意当 uFlags 具有设置SHGDN_FORPARSING标志时返回的解析名称不一定是普通文本字符串。 虚拟文件夹(如“我的电脑”)可能会返回包含文件夹对象的 GUID 的字符串,格式为“::{GUID}”。 建议实现 IShellFolder::GetDisplayNameOf 的开发人员返回尽可能接近显示名称的解析名称,因为最终用户通常需要键入或编辑这些名称。
 

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 shobjidl_core.h (包括 Shobjidl.h)
DLL Shell32.dll (版本 4.0 或更高版本)

另请参阅

IShellFolder

IShellFolder2