Перечисление _SHGDNF (shobjidl_core.h)
Определяет значения, используемые с методами IShellFolder::GetDisplayNameOf и IShellFolder::SetNameOf для указания типа имен файлов или папок, используемых этими методами.
Синтаксис
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 предоставляет только свое базовое имя для редактирования, а не полное имя.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP, Windows 7 [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Верхняя часть | shobjidl_core.h (включая Shobjidl.h) |