_SHGDNF 枚举 (shobjidl_core.h)

定义与 IShellFolder::GetDisplayNameOfIShellFolder::SetNameOf 方法一起使用的值,以指定这些方法使用的文件或文件夹名称的类型。

注意 在 Windows 7 之前,这些值打包为 SHGNO 枚举。
 

语法

typedef enum _SHGDNF {
  SHGDN_NORMAL = 0,
  SHGDN_INFOLDER = 0x1,
  SHGDN_FOREDITING = 0x1000,
  SHGDN_FORADDRESSBAR = 0x4000,
  SHGDN_FORPARSING = 0x8000
} ;

常量

 
SHGDN_NORMAL
值: 0
如果未与其他标志组合使用,则返回标识项的父相对名称,适合向用户显示。 此名称通常不包括文件扩展名等额外信息,并且不需要是唯一的。 此名称可能包含标识包含该项目的文件夹的信息。 例如,此标志可能导致 IShellFolder::GetDisplayNameOf 返回特定用户文件夹的字符串“username (on Machine) ”。
SHGDN_INFOLDER
值: 0x1
该名称相对于发出请求的文件夹。 这是在文件夹的上下文中使用时向用户显示的名称。 例如,它在视图和文件夹的地址栏路径段中使用。 此名称不应包含消除歧义信息,例如,特定用户的文件夹的username”而不是“machine) 上的用户名 (”。

将此标志与 SHGDN_FORPARSINGSHGDN_FOREDITING 结合使用。
SHGDN_FOREDITING
值: 0x1000
当用户重命名项目时,该名称用于就地编辑。
SHGDN_FORADDRESSBAR
值: 0x4000
名称显示在地址栏组合框中。
SHGDN_FORPARSING
值: 0x8000
名称用于分析。 也就是说,可以将其传递给 IShellFolder::P arseDisplayName 以恢复对象的 PIDL。 此名称采用的形式取决于特定对象。 单独使用 SHGDN_FORPARSING 时,名称相对于桌面。 与 SHGDN_INFOLDER 结合使用时,名称相对于发出请求的文件夹。

注解

SHGDNF 类型在 Shobjidl.h 中定义,如下所示。

typedef DWORD SHGDNF;

此枚举由两组值组成。 第一个组(SHGDN_NORMAL和SHGDN_INFOLDER)指定名称的类型。 第二个组(SHGDN_FOREDITING、SHGDN_FORADDRESSBAR和SHGDN_FORPARSING)由指定名称检索选项的第一个组的修饰符组成。

如果设置了SHGDN_FORPARSING且未设置SHGDN_INFOLDER, 则 IShellFolder::GetDisplayNameOf 可以接受包含多个 SHITEMID 结构的 PIDL。 否则,只能传递单级 PIDL。

注意 虽然文件系统对象返回的解析名称是对象的完全限定路径,但虚拟文件夹可能使用完全不同的内容。 例如,某些虚拟文件夹使用 GUID 作为分析名称,并返回格式为“::{GUID}”的字符串。 若要检查对象是否是文件系统的一部分,请调用 IShellFolder::GetAttributesOf 并查看是否设置了SFGAO_FILESYSTEM标志。 建议实现 IShellFolder::GetDisplayNameOf 的 开发人员返回尽可能接近显示名称的解析名称,因为最终用户通常需要键入或编辑这些名称。

SHGDN_NORMAL 的数值为零,因此无法测试是否存在此位。 考虑SHGDN_NORMAL一个默认设置,如果未设置该组中的任何其他标志,则使用该默认设置。

示例

下表演示了五个不同标志选项和三种不同项类型的可能返回值的示例。

这些是标志选项。

Number Flags 说明
1 SHGDN_FORPARSING 返回完全限定分析名称。
2 SHGDN_INFOLDER |SHGDN_FORPARSING 返回相对于父文件夹的解析名称。
3 SHGDN_INFOLDER |SHGDN_FOREDITING 返回相对于父文件夹的编辑名称。
4 SHGDN_INFOLDER 返回相对于父文件夹的显示名称。
5 SHGDN_NORMAL 返回相对于桌面而不是特定文件夹的显示名称。
 

这些是示例项类型。

Letter 说明
A 本地计算机上的 C: 驱动器,其卷标签C_DRIVE。
B 名为 Mailroom 的计算机上名为 Laser 的打印机。
C 当文件扩展名隐藏) 时,文件 C:\Directory\File.txt (。
 

下表描述了将返回的显示名称。

A B C
1 C:\ \\Mailroom\Laser C:\Directory\File.txt
2 C:\ 激光 File.txt
3 C_DRIVE 激光 文件
4 C_DRIVE (C:) 激光 文件
5 C_DRIVE (C:) 邮件室上的激光 文件
 

有关示例的备注

  • 答 3:C: 驱动器显示要编辑的卷名,而不是整个字符串“C_DRIVE (C:) ”。
  • B1-B5:远程打印机的显示名称根据是否相对于其父打印机显示而更改。 当相对于其父级显示时,它只需要其打印机名称,但在父级外部显示时,它将显示其打印机名称和计算机名称。
  • C3:File.txt 仅显示其用于编辑的基名称,而不是其全名。
有关 IShellFolder 接口的进一步讨论,请参阅 获取有关文件夹内容的信息

要求

要求
最低受支持的客户端 Windows XP、Windows 7 [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
标头 shobjidl_core.h (包括 Shobjidl.h)