Поделиться через


Перечисление _SHGDNF (shobjidl_core.h)

Определяет значения, используемые с методами IShellFolder::GetDisplayNameOf и IShellFolder::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 возвратит строку "имя пользователя (на компьютере)" для папки конкретного пользователя.
SHGDN_INFOLDER
Значение: 0x1
Имя относится к папке, из которой был сделан запрос. Это имя, отображаемое пользователю при использовании в контексте папки. Например, он используется в представлении и в сегменте пути адресной строки для папки. Это имя не должно содержать неоднозначные сведения, например "имя пользователя" вместо "имя пользователя (на компьютере)" для папки конкретного пользователя.

Используйте этот флаг в сочетании с SHGDN_FORPARSING и SHGDN_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 может принимать PIDL, содержащий больше структуры SHITEMID . В противном случае можно передать только одноуровневый PIDL.

Примечание Хотя имя анализа, возвращаемое объектами файловой системы, является полным путем объекта, виртуальные папки могут использовать совершенно другое. Например, некоторые виртуальные папки используют GUID в качестве имени для анализа и возвращают строку в виде ::{GUID}. Чтобы проверка, является ли объект частью файловой системы, вызовите IShellFolder::GetAttributesOf и посмотрите, установлен ли флаг SFGAO_FILESYSTEM. Разработчикам, реализующим IShellFolder::GetDisplayNameOf , рекомендуется возвращать имена синтаксического анализа, которые максимально близки к отображаемым именам, так как пользователю часто требуется ввести или изменить эти имена.

Числовое значение SHGDN_NORMAL равно нулю, поэтому проверить наличие этого бита нельзя. Рассмотрите SHGDN_NORMAL параметр по умолчанию, который используется, если в этой группе не установлен другой флаг.

Пример

В следующих таблицах показан пример возможных возвращаемых значений для пяти различных параметров флагов и трех разных типов элементов.

Это параметры флагов.

Число Флаги Описание
1 SHGDN_FORPARSING Возвращает полное имя синтаксического анализа.
2 SHGDN_INFOLDER | SHGDN_FORPARSING Возвращает имя синтаксического анализа относительно родительской папки.
3 SHGDN_INFOLDER | SHGDN_FOREDITING Возвращает имя редактирования относительно родительской папки.
4 SHGDN_INFOLDER Возвращает отображаемое имя относительно родительской папки.
5 SHGDN_NORMAL Возвращает отображаемое имя относительно рабочего стола, а не для определенной папки.
 

Это примеры типов элементов.

Письмо Описание
Объект Диск C: на локальном компьютере, метка тома которого C_DRIVE.
B Принтер с именем Laser на компьютере Mailroom.
C Файл C:\Directory\File.txt (если расширения имени файла скрыты).
 

В следующей таблице описаны отображаемые имена в том виде, в котором они будут возвращены.

Объект B C
1 C:\ \\Mailroom\Laser C:\Directory\File.txt
2 C:\ Лазерный File.txt
3 C_DRIVE Лазерный File
4 C_DRIVE (C:) Лазерный File
5 C_DRIVE (C:) Лазер на mailroom File
 

Примечания к примерам

  • A3: диск C: представляет имя тома для редактирования, а не всю строку "C_DRIVE (C:)".
  • B1–B5: отображаемое имя удаленного принтера изменяется в зависимости от того, отображается ли он относительно родительского принтера. При отображении относительно родительского элемента ему требуется только имя принтера, но при отображении за пределами родительского элемента отображается как имя принтера, так и имя компьютера.
  • C3: File.txt предоставляет только свое базовое имя для редактирования, а не полное имя.
Дополнительные сведения об интерфейсе IShellFolder см. в разделе Получение сведений о содержимом папки.

Требования

Требование Значение
Минимальная версия клиента Windows XP, Windows 7 [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Верхняя часть shobjidl_core.h (включая Shobjidl.h)