Диалоговое окно способ открытия

Общие диалоговые окна

это руководство по проектированию было создано для Windows 7 и не обновлялось для более новых версий Windows. Многие рекомендации по-прежнему применяются в принципе, но презентация и примеры не соответствуют нашим текущим руководствам по проектированию.

общие диалоговые окна Windows Microsoft состоят из диалоговых окон открытие файла, сохранение файла, открытие папки, поиск и замена, печать, настройка страницы, шрифт и цвет.

Открыть файл

Открытый файл оптимизирован для быстрого поиска элементов, используемых в программе.

Сохранение файла

Сохранить файл закрывает цикл, сохраняя файл с его метаданными.

Открыть папку

Открытая папка предназначена специально для выбора папок.

Поиск и замена

Поиск позволяет пользователям искать текстовые строки, в то время как замена версии при необходимости позволяет пользователям заменять совпадения другой строкой.

Печать

Печать позволяет пользователям выбирать, что печатать, число печатаемых копий и последовательность параметров сортировки, а также возможность выбирать и настраивать принтеры.

Параметры страницы

Параметры страницы позволяют пользователям выбирать размер бумаги и источник, ориентацию страницы и поля.

Шрифт

Шрифт отображает шрифты и размеры точек доступных установленных шрифтов.

Color

Цвет позволяет пользователям выбирать цвет с помощью предопределенного набора цветов или выбора пользовательского цвета.

Принципы проектирования

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

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

  • Входные значения (примеры: папки по умолчанию, имена файлов по умолчанию).
  • Выбранные параметры (примеры: выбранный принтер, параметры печати).
  • Представления (примеры: отображение изображений в виде эскиза, отображение изображений без имен файлов, сортировка по дате, ширина столбцов).
  • Презентация (примеры: размер окна, расположение и содержимое).

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

Эффективно ли работают программы по умолчанию? Следите за количеством шагов, которые пользователи должны предпринять для выполнения наиболее распространенных задач. Если пользователям приходится повторять одни и те же потенциально ненужные шаги при каждом выполнении задачи, можно улучшить значения по умолчанию.

Если вы выполняете только одно действие.

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

Это правильный пользовательский интерфейс?

Да! Используйте общие диалоговые окна для единообразия взаимодействия с пользователем. Не создавайте свои собственные. Особенно сложно создавать пользовательские интерфейсы пользовательского интерфейса, позволяющие правильно и безопасно переходить к пространству имен. Обратите внимание, что при необходимости можно настроить общие диалоговые окна.

для Windows Vista открытый файл и файл сохранения имеют новую расширяемую архитектуру, что упрощает предоставление дополнительных функциональных возможностей. Этот механизм достаточно гибок для удовлетворения минимальных требований к основным независимым поставщикам программного обеспечения (ISV), но не должен быть разбит на будущие выпуски Windows.

Рекомендации

Общие сведения

  • При необходимости предоставьте более прямые или Немодальные альтернативы. Разрешить пользователям:
    • Откройте файлы, удалив их в программе.
    • Сохраните файлы, используя их текущее имя и расположение, с помощью команды Save.
    • Найти следующее вхождение строки с помощью клавиши F3.
    • Печать одной копии всего документа на принтере по умолчанию с помощью команды «Печать».
    • Изменение шрифтов и атрибутов шрифтов с помощью панели инструментов или окна палитры.
    • Изменение цветов с помощью панели инструментов или окна палитры.
  • Используйте следующие команды для вывода общих диалоговых окон (заданных вместе с их предпочтительными ключами доступа):
Общее диалоговое окно Команда
Открыть файл Открыть.
Сохранение файла Сохранить как.
Открыть папку Открыть папку. или выберите Папка.
Найти и заменить Найти. или замените.
Печать Печать.
Параметры страницы Параметры страницы.
Шрифт Шрифт. или выберите шрифт.
Color Цвет. или выберите цвет.
  • При необходимости можно использовать более конкретные команды. Пример. для экспорта файла используйте командный файл экспорта вместо команды «Сохранить как».
  • Задайте заголовок диалогового окна, чтобы отразить команду, которая ее запустила. Пример. Если команда Save File запускается из команды Export File, переименуйте диалоговое окно, чтобы экспортировать файл.

Открыть файл

  • Для начальной папки по умолчанию используйте специальную папку (рисунки, музыку, видео) в зависимости от ситуации. в противном случае используйте документы.
  • Для последующих папок по умолчанию используйте последнюю папку, открытую пользователем с помощью программы.
  • При открытии файлов фотографий по умолчанию подавляет имена файлов. Фотографии обычно определяются их эскизами, и их имена обычно не имеют смысла.

Сохранение файла

  • Для начальной папки по умолчанию (если новый файл сохраняется в первый раз) используйте специальную папку (рисунки, музыку, видео), в противном случае используйте документы.
  • Для временных файлов используйте временную папку текущего пользователя. Выберите простые, но уникальные имена файлов. Пример. Используйте File0001. tmp вместо

DF1A92. tmp.

  • Разработчики: Вы можете получить временную папку текущего пользователя с помощью функции API Жеттемппас.
  • Для первоначального имени файла по умолчанию используйте уникальное имя по умолчанию на основе:
    • Содержимое файла, если оно известно. Пример: первые слова в документе.
    • Шаблон, выбранный пользователем. Пример. Если предыдущий файл назывался «Гавайи 1.jpg», выберите «Гавайи 2.jpg» в качестве следующего файла.
    • Универсальный шаблон, основанный на типе файла. Пример: «Photo1.jpg».
  • Для последующих значений по умолчанию (если файл уже существует) Используйте текущую папку и имя файла.
  • При сохранении файла сохраняется его Дата создания. Если программа сохраняет файлы путем создания временного файла, удаляет исходный файл и переименовывает его в исходное имя, не забудьте скопировать дату создания из исходного файла.
  • Используйте параметр сохранить файл, если пользователь выбирает команду Сохранить, не указывая имя файла.
  • Списки типов файлов

    Примечание. Списки типов файлов используются в файле Open File и Save File, чтобы определить типы отображаемых файлов и расширение файла по умолчанию.

    • Если список типов файлов является коротким (5 или меньшим), закажите список по вероятности использования. Если список является длинным (шесть или более), используйте алфавитный порядок, чтобы облегчить поиск типов.
    • Для параметра сохранить файл включите все варианты поддерживаемых расширений файлов, даже если они встречаются редко, и сначала поместите наиболее распространенное расширение. Логика обработки файлов просматривает этот список, чтобы определить, было ли пользователь указал поддерживаемое расширение файла. Пример. Если список типов JPEG-файлов содержит только .jpg и. JPEG, файл Test. jpe может быть сохранен как test.jpe.jpg.
    • Для сохранения файла первоначальный тип файла по умолчанию наиболее вероятно выбирается конечным пользователем. Последующее значение по умолчанию — текущий тип файла.
    • Для открытого файла первоначальный тип файла по умолчанию наиболее вероятно выбирается конечным пользователем. Последующим значением по умолчанию должен быть последний используемый тип файла.
    • Для открытого файла включите запись «все файлы» в качестве первого элемента, если пользователи могут открывать файлы любого типа или могут потребовать одновременного просмотра всех файлов в папке. Рассмотрите возможность предоставления других мета фильтров, таких как «все изображения», «все музыкальные файлы» и «все видео». Разместите их сразу после «все файлы».
    • Используйте формат «имя типа файла ( * . EXT1;» * . ext2). Имя типа файла должно быть зарегистрированным именем типа файла, которое можно просмотреть в элементе панели управления «Свойства папки». Пример: «HTML-документ ( *.htm; *.html) «.
      • Исключение: Для мета-фильтров удалите список расширений файлов, чтобы избежать загромождения. Примеры: «все файлы», «все изображения», «все музыкальные записи» и «все видео».
    • Для имен типов файлов используйте прописные буквы в стиле , а для расширений типов файлов — нижний регистр.

    Открыть папку

    • Для новых программ используйте диалоговое окно Открытие файлов в режиме «Выбор папок». для этого требуется Windows Vista или более поздней версии, поэтому используйте диалоговое окно открытие папки для программ, которые работают в более ранних версиях Windows.
      • Разработчики: Можно использовать диалоговое окно Открытие файлов в режиме «Выбор папок» с помощью _ флага ПИККФОЛДЕРС Фос.

    Шрифт

    • При необходимости можно отфильтровать список шрифтов, чтобы отображались только шрифты, доступные для программы.

    Сохраняемость

    • Попробуйте сделать следующие значения постоянными для использования в качестве последующих значений по умолчанию:
      • Входные значения (примеры: папки по умолчанию, имена файлов по умолчанию).
      • Выбранные параметры (примеры: выбранный принтер, параметры печати).
      • Представления (примеры: отображение изображений в виде эскиза, отображение изображений без имен файлов, сортировка по дате, ширина столбцов).
      • Презентация (примеры: размер окна, расположение и содержимое).

    Исключение: Не следует сохранять эти значения для общих диалоговых окон, когда их использование является более вероятной, чтобы пользователи могли начать работу полностью.

    • При определении значений по умолчанию рассмотрите, какие целевые пользователи, скорее всего, пожелаете в зависимости от важных сценариев. Кроме того, рассмотрите возможность использования сценариев в экземпляре программы в нескольких экземплярах (как последовательных, так и параллельных) и в нескольких документах. Не следует сохранять значения в обстоятельствах, которые, скорее всего, не будут полезны.
      • Пример: Для типичного приложения на основе документов полезно использовать постоянные открытые файлы и сохранять параметры файлов в экземпляре программы и в последовательных экземплярах, но хранить независимые экземпляры независимо друг от друга. Таким образом, пользователи могут эффективно работать с несколькими документами за раз.
    • Сделайте эти параметры постоянными для каждой программы отдельно для каждого пользователя.

    —>

    Источник

    Открытие и сохранение диалоговых окон

    Функция GetOpenFilename показана в файле, который используется в качестве примера.

    [начиная с Windows Vista общие диалоговые окна » открыть » и » сохранить как » были заменены диалоговым окном общих элементов. Рекомендуется использовать API-интерфейс общего элемента, а не эти диалоговые окна из библиотеки общих диалоговых окон.]

    Диалоговое окно Открыть позволяет пользователю указать диск, каталог и имя файла или набора файлов, которые нужно открыть. Вы создаете и отображаете открытое диалоговое окно, инициализируя структуру OpenFileName и передавая структуру в функцию GetOpenFilename .

    Диалоговое окно Сохранить как позволяет пользователю указать диск, каталог и имя сохраняемого файла. Вы создаете и отображаете диалоговое окно Сохранить как , инициализируя структуру OpenFileName и передавая структуру в функцию жетсавефиленаме .

    в диалоговых окнах » открыть » и » сохранить как » обозревателя представлены функции пользовательского интерфейса, аналогичные проводнику Windows. Однако система по-прежнему поддерживает диалоговые окна открытия и сохранения старого стиля для приложений, которые должны быть совместимы с пользовательским интерфейсом старого стиля.

    В дополнение к различиям в внешнем виде диалоговые окна в стиле обозревателя и старого стиля отличаются использованием пользовательских шаблонов и процедур подключения для настройки диалоговых окон. Однако диалоговые окна в стиле обозревателя и старого стиля имеют одинаковое поведение для большинства основных операций, таких как указание фильтра имен файлов, проверка вводимых пользователем данных и получение имени файла, указанного пользователем. Дополнительные сведения о диалоговых окнах «Обозреватель-стиль» и «старый стиль» см. в разделе Настройка диалоговых окон «Открыть» и «сохранить как».

    На следующем рисунке показано типичное диалоговое окно « Открыть в стиле обозревателя».

    На следующем рисунке показано типичное диалоговое окно « Сохранение в стиле обозревателя».

    Если пользователь задает имя файла и нажимает кнопку ОК , GetOpenFilename или жетсавефиленаме возвращает значение true. Буфер, на который указывает член указанный структуры OpenFileName , содержит полный путь и имя файла, указанные пользователем.

    Если пользователь отменяет диалоговое окно Открыть или Сохранить как или возникает ошибка, функция возвращает значение false. Чтобы определить причину ошибки, вызовите функцию коммдлжекстендедеррор , чтобы получить расширенное значение ошибки. Если буфер указанный слишком мал для получения полного имени, коммдлжекстендедеррор возвращает фнерр _ буффертусмалл , а первые 2 байта буфера, на который указывает элемент указанный , устанавливаются в целочисленное значение, определяющее размер, необходимый для получения полного имени.

    В этом разделе рассматриваются следующие темы.

    Имена файлов и каталоги

    Сведения в этом разделе относятся к диалоговым окнам Открыть и Сохранить как в стиле обозревателя, так и в старом стиле.

    Перед вызовом функций GetOpenFilename или жетсавефиленаме элемент указанный структуры OpenFileName должен указывать на буфер для получения имени файла. Элемент нмаксфиле должен указывать размер буфера указанный в символах. Для функции ANSI это число байтов, но для функции Юникода это число символов.

    Если пользователь задает имя файла и нажимает кнопку ОК , диалоговое окно копирует выбранный диск, каталог и имя файла в буфер указанный . Функция также задает для элементов нфилеоффсет и нфиликстенсион смещения (в символах) от начала буфера до имени файла и расширения имени файла соответственно.

    Чтобы получить только имя файла и расширение, установите элемент лпстрфилетитле , чтобы он указывал на буфер, и задайте для элемента нмаксфилетитле размер (в символах) буфера. Кроме того, можно передать буфер указанный в вызове функции жетфилетитле , чтобы получить отображаемое имя выбранного файла. Однако обратите внимание, что имя файла, возвращаемое жетфилетитле , включает расширение, только если это пользовательская предпочтение для отображения имен файлов.

    В диалоговом окне используется текущий каталог для вызывающего процесса в качестве исходного каталога, из которого должны отображаться файлы и каталоги. Используйте функции GetCurrentDirectory и сеткуррентдиректори для получения и изменения текущего каталога процесса. Чтобы указать другой исходный каталог без изменения текущего каталога, используйте член лпстринитиалдир , чтобы указать имя каталога. Диалоговое окно автоматически изменяет текущий каталог, когда пользователь выбирает другой диск или каталог. Чтобы предотвратить изменение текущего каталога в диалоговом окне, установите флаг ОФН _ ночанжедир . Этот флаг не запрещает пользователю изменять каталоги для поиска файла.

    Чтобы указать расширение имени файла по умолчанию, используйте элемент лпстрдефекст . Если пользователь указывает имя файла, у которого нет расширения, в диалоговом окне добавляется расширение по умолчанию. Если задано расширение по умолчанию и пользователь указывает имя файла с другим расширением, то в диалоговом окне устанавливается флаг ОФН _ екстенсиондифферент .

    Чтобы позволить пользователю выбрать более одного файла из каталога, установите флаг ОФН _ алловмултиселект . Для совместимости с более старыми приложениями в диалоговом окне множественный выбор по умолчанию используется пользовательский интерфейс старого стиля. Для вывода диалогового окна «Выбор нескольких вариантов в стиле обозревателя» необходимо также установить флаг _ обозревателя ОФН .

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

    Стиль диалогового окна Описание
    Диалоговые окна в стиле обозревателя Строки имени файла и каталога с разделителями null разделяются символом null после последнего имени файла. Этот формат позволяет диалоговым окнам в стиле обозревателя возвращать длинные имена файлов, содержащие пробелы.
    Диалоговые окна старого стиля Строки имен файлов и каталогов разделяются пробелами. Для имен файлов с пробелами функция использует короткие имена файлов.

    Функцию FindFirstFile можно использовать для преобразования между длинными и короткими именами файлов.

    Если указать ОФН _ алловмултиселект и пользователь выбрал только один файл, то в строке указанный не будет разделителя между путем и именем файла.

    Фильтры

    Сведения в этом разделе относятся к диалоговым окнам «обозреватель-стиль» и « старый стиль» и « Сохранить как ».

    Можно указать фильтры имен файлов, чтобы помочь пользователю в ограничении имен файлов, отображаемых в диалоговом окне. Фильтр имен файлов состоит из пары строк, завершающихся нулем, описания и шаблона, Объединенных в другой. В диалоговом окне отображается описание, позволяющее пользователю выбрать используемый фильтр. и использует шаблон для выбора файлов для вывода.

    Чтобы указать фильтры, установите элемент лпстрфилтер структуры OpenFileName , чтобы он указывал на буфер, содержащий массив пар строк фильтра. За последней строкой в массиве должен следовать дополнительный символ null.

    Строка шаблона может представлять собой сочетание допустимых символов имени файла и звездочки ( * ). Звездочка — это подстановочный знак, который представляет любое сочетание допустимых символов имени файла. В диалоговом окне отображаются только те файлы, которые соответствуют шаблону. Чтобы указать несколько шаблонов для одного описания, необходимо использовать точку с запятой (;) для разделения шаблонов. Обратите внимание, что пробелы в строке шаблона могут привести к непредвиденным результатам.

    В следующем фрагменте кода указываются два фильтра. Фильтр с описанием «источник» имеет два шаблона. Если пользователь выбирает этот фильтр, в диалоговом окне отображаются только файлы с. C и. Расширения CXX. Обратите внимание, что в языке программирования C строка, заключенная в двойные кавычки, завершается нулем.

    Элемент нфилтериндекс структуры OpenFileName задает индекс, который указывает, какой фильтр используется в первоначальном диалоговом окне. Первый фильтр в буфере имеет индекс 1, второй 2 и т. д. Если пользователь изменяет фильтр при использовании диалогового окна, для элемента нфилтериндекс задается индекс выбранного фильтра в поле Return.

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

    Для диалоговых окон в стиле обозревателя расширение по умолчанию может измениться, если пользователь выбирает другой фильтр. Если пользователь выбирает фильтр, первый шаблон которого имеет форму * .XXX (т. е. расширение не содержит подстановочный знак), в диалоговом окне в качестве расширения по умолчанию используется xxx . Это происходит только в том случае, если в элементе лпстрдефекст структуры OpenFileName указано расширение по умолчанию. Например, если пользователь выбирает «source \ 0» * . C; * . CXX \ 0 «фильтр, расширение по умолчанию изменяется на» C «. Однако, если фильтр был определен как «Source 0» \ * . * \ В C 0 «расширение по умолчанию не изменится, так как расширение содержит подстановочный знак.

    сообщение уведомления CDN _ инклудеитем предоставляет другой способ фильтрации имен, отображаемых в диалоговом окне. Чтобы использовать это сообщение, укажите процедуру-обработчик офнхукпрок и укажите флаг ОФН _ енаблеинклуденотифи в структуре OpenFileName при создании этого диалогового окна. каждый раз, когда пользователь открывает папку, диалоговое окно отправляет CDN уведомление _ в процедуру обработчика для каждого элемента во вновь открытой папке. Возвращаемое значение процедуры-обработчика указывает, должно ли диалоговое окно отображать элемент в списке элементов папки.

    Проверка файлов и каталогов

    Если не указано иное, сведения в этом разделе применяются к диалоговым окнам Открыть и Сохранить как в стиле обозревателя, так и в старом стиле.

    Диалоговое окно автоматически проверяет имена файлов, введенные пользователем, чтобы гарантировать, что имена содержат только допустимые символы. Чтобы переопределить проверку символа имени файла, установите флаг ОФН. _

    Чтобы заставить диалоговое окно подтвердить, что пользователь указал имя существующего файла, установите флаг ОФН _ выполнить операцию filemustexist . Чтобы принудительно выполнить проверку того, что указанный путь существует, установите флаг ОФН _ пасмустексист . Если установлен флаг ОФН _ креатепромпт , то диалоговое окно запрашивает у пользователя разрешение на создание несуществующего файла. Если этот флаг установлен и пользователь выбирает создание нового файла, диалоговое окно закрывается, а функция возвращает указанное имя. В противном случае диалоговое окно остается открытым.

    При использовании диалогового окна Сохранить как можно направлять диалоговое окно, предлагающее пользователю запросить разрешение на перезапись существующего файла, установив флаг ОФН _ овервритепромпт .

    По умолчанию диалоговое окно создает тестовый файл нулевой длины, чтобы определить, можно ли создать новый файл в выбранном каталоге. Чтобы предотвратить создание этого тестового файла, установите флаг ОФН _ нотестфилекреате .

    При включении процедуры-обработчика диалоговое окно уведомляет процедуру-обработчик о том, что для имени файла, указанного пользователем, возникает нарушение общего доступа к сети. если задан флаг офн _ EXPLORER , то диалоговое окно отправляет в процедуру обработчика сообщение CDN _ шаревиолатион . Если не задать ОФН _ Explorer, диалоговое окно отправляет в процедуру обработчика зарегистрированное шаревистринг сообщение. Чтобы запретить диалоговому окну отправлять уведомления о нарушениях общего доступа, установите флаг ОФН _ шареаваре .

    Если пользователь устанавливает флажок только для чтения, то диалоговое окно устанавливает флаг ОФН _ ReadOnly для возврата. Чтобы скрыть флажок Открыть как только для чтения , установите флаг ОФН _ хидереадонли . Чтобы диалоговое окно не возвращало имена существующих файлов с атрибутом только для чтения, установите флаг ОФН _ нореадонлиретурн .

    Чтобы запретить диалоговому окну отменять ссылки на файлы ссылок, задайте значение ОФН _ нодереференцелинкс . В этом случае диалоговое окно возвращает имя файла ссылки, а не имя файла, на который ссылается файл ссылки.

    Настройка диалогового окна «открыть и сохранить как»

    Диалоговое окно Открыть или Сохранить как можно настроить, предоставив процедуру-обработчик, пользовательский шаблон или и то, и другое. Однако версии диалоговых окон в стиле обозревателя и старого стиля отличаются использованием пользовательских шаблонов и процедур-обработчиков.

    Сведения о настройке диалогового окна в стиле обозревателя см. в разделе процедуры-обработчикив стиле обозревателя, пользовательские шаблоны в стиле обозревателяи идентификаторы элементов управления в стиле обозревателя. Сведения о настройке диалогового окна старого стиля см. в разделе Настройка диалоговых окон Old-Style.

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

    Настройка Описание
    Процедура обработчика в стиле обозревателя Процедура-обработчик получает сообщения уведомления, отправленные из общего диалогового окна, и сообщения для любых дополнительных элементов управления, определенных с помощью шаблона дочернего диалогового окна. Процедура-обработчик не получает сообщения для стандартных элементов управления диалогового окна по умолчанию.
    Пользовательский шаблон в стиле обозревателя Система использует пользовательский шаблон для создания дочернего диалогового окна. Шаблон может определять дополнительные элементы управления, а также указывать расположение кластера стандартных элементов управления. Пользовательский шаблон не заменяет шаблон по умолчанию.
    Процедура обработчика старого стиля Процедура-обработчик получает все сообщения, отправленные в диалоговое окно, включая сообщения для стандартных элементов управления и пользовательских элементов управления. Процедура-ловушка также получает зарегистрированные сообщения, отправленные из общего диалогового окна.
    Пользовательский шаблон старого стиля Пользовательский шаблон заменяет шаблон по умолчанию. Создайте пользовательский шаблон, изменив шаблон по умолчанию, указанный в файле FileOpen. DLG.

    Заголовок по умолчанию для диалоговых окон как в стиле обозревателя, так и в старом стиле — «Открыть» или «Сохранить как«. Чтобы изменить заголовок, укажите новый заголовок в элементе лпстртитле структуры OpenFileName .

    Куст реестра hKey для _ текущего _ пользователя , содержащийся в разделе, может содержать значения, которые настраивают содержимое диалоговых окон « Открытие » и « Сохранение » в стиле обозревателя. Эти записи реестра затрагивают только диалоговые окна, отображаемые для пользователя, связанного с кустом реестра.

    Чтобы скрыть возможности диалоговых окон « Открыть » и « Сохранить как » в стиле обозревателя, администратор может задать значения в следующей таблице в этом подразделе:

    Имя значения Значение Значение
    ноплацесбар 1 Скрывает панель мест.
    нофилемру 1 Скрывает список недавно использованных (MRU) списков.
    нобаккбуттон 1 Скрывает кнопку » назад «.

    Содержимое панели мест определяется содержимым следующего подраздела:

    В настоящее время в этом ключе может быть только пять записей, а индекс значения или имени — от нуля. Имена записей должны быть Place0, Place1, Place2, Place3 и Place4. Значения записей могут быть значениями reg _ DWORD, reg _ SZ или reg _ expand _ SZ , которые указывают расположения для включения в панель мест.

    Тип значения Значение
    REG _ DWORD Значение CSID, идентифицирующее папку. Список значений CSID см. в разделе значения CSid.
    Reg _ SZ или reg _ expand _ SZ Строка, завершающаяся нулем и указывающая допустимый путь.

    Explorer-Style процедуры-обработчики

    Можно настроить диалоговое окно Открытие или Сохранение в стиле обозревателя, предоставив процедуру-обработчик, пользовательский шаблон или и то, и другое. При предоставлении процедуры-обработчика для диалогового окна в стиле обозревателя система создает диалоговое окно, которое является дочерним по отношению к диалоговому окну по умолчанию. Процедура-обработчик выступает в качестве процедуры диалогового окна для дочернего диалогового окна. Это дочернее диалоговое окно основано на пользовательском шаблоне или в шаблоне по умолчанию, если он не указан. Дополнительные сведения см. в разделе пользовательские шаблоны в стиле обозревателя.

    Чтобы включить процедуру-обработчик для диалогового окна « Открыть » или « Сохранить как » в стиле обозревателя, используйте структуру OpenFileName при создании диалогового окна. Задайте флаги ОФН _ Енаблехук и ОФН _ Explorer в элементе flags и укажите адрес процедуры-обработчика офнхукпрок в элементе лпфнхук . При предоставлении процедуры-обработчика и пропущении флага _ обозревателя ОФН необходимо использовать процедуру-обработчик офнхукпроколдстиле , и вы получите пользовательский интерфейс старого стиля. Дополнительные сведения см. в разделе Настройка диалоговых окон Old-Style.

    При открытии диалогового окна процедура обработчика в стиле обозревателя получает разнообразные сообщения. следующие основные параметры.

    • Сообщение WM _ инитдиалог и другие стандартные сообщения диалогового окна, такие как сообщение цвета элемента управления WM _ ктлколордлг .
    • Набор сообщений уведомления WM _ Notify , указывающий действия, выполняемые пользователем или другим событием диалогового окна.
    • Сообщения для любых дополнительных элементов управления, определенных путем указания дочернего шаблона диалогового окна.

    Кроме того, существует набор сообщений, которые можно отправить в диалоговое окно в стиле обозревателя для получения сведений или управления поведением и внешним видом диалогового окна.

    При предоставлении процедуры-обработчика для диалогового окна в стиле обозревателя процедура диалогового окна по умолчанию создает дочернее диалоговое окно, когда процедура диалогового окна по умолчанию обрабатывает сообщение WM _ инитдиалог . Процедура-обработчик выступает в качестве процедуры диалогового окна для дочернего диалогового окна. В настоящее время процедура-обработчик получает собственное сообщение WM _ инитдиалог с параметром lParam , равным адресу структуры OpenFileName , используемой для инициализации диалогового окна. После того как дочерний диалог завершает обработку своего сообщения _ инитдиалог WM , процедура диалогового окна по умолчанию при необходимости перемещает стандартные элементы управления, чтобы освободить место для любых дополнительных элементов управления дочернего диалогового окна. затем процедура диалогового окна по умолчанию отправляет сообщение уведомления CDN _ инитдоне в процедуру-обработчик.

    Процедура-обработчик получает уведомления WM _ Notify , указывающие действия, выполняемые пользователем в диалоговом окне. Некоторые из этих сообщений можно использовать для управления поведением диалогового окна. например, процедура-обработчик получает сообщение CDN _ филеок , когда пользователь выбирает имя файла и нажимает кнопку ок . В ответ на это сообщение процедура-обработчик может использовать функцию SetWindowLong , чтобы отклонить выбранное имя и принудительно оставить диалоговое окно открытым.

    Параметр lParam для каждого сообщения с _ уведомлением WM — это указатель на структуру офнотифи или офнотифекс , определяющую действие. Элемент Code в заголовке этой структуры содержит одно из следующих сообщений уведомления.

    Сообщение Значение
    CDN _ филеок Пользователь нащелкнул кнопку ОК ; диалоговое окно скоро закроется.
    CDN _ фолдерчанже Пользователь открыл новую папку или каталог.
    CDN _ СПРАВКА Пользователь щелкнул кнопку Справка .
    CDN _ инклудеитем Определяет, должен ли отображаться элемент. Когда пользователь открывает новую папку или каталог, система отправляет это уведомление для каждого элемента в папке или каталоге. Система отправляет это уведомление только в том случае, если установлен флаг ОФН _ енаблеинклуденотифи .
    CDN _ инитдоне Система завершила инициализацию диалогового окна, и диалоговое окно завершило обработку сообщения WM _ инитдиалог . Кроме того, система завершила компоновку элементов управления в общем диалоговом окне, чтобы освободить место для элементов управления дочернего диалогового окна (если оно есть).
    CDN _ селчанже Пользователь выбрал новый файл или папку из списка файлов.
    CDN _ шаревиолатион В общем диалоговом окне произошло нарушение совместного доступа к файлу, который должен быть возвращен.
    CDN _ типечанже Пользователь выбрал новый тип файла из списка типов файлов.

    Эти сообщения WM _ Notify заменяют зарегистрированные сообщения филеокстринг, лбселчстринг, шаревистринги хелпмсгстринг , используемые предыдущими версиями диалоговых окон Открыть и Сохранить как . Однако процедура-ловушка также получает заменяемое сообщение после сообщения WM _ Notify , если обработка _ уведомления WM не использует SetWindowLong для установки ненулевого значения _ мсгресулт DWL .

    Чтобы получить сведения о состоянии диалогового окна или управлении поведением и внешним видом диалогового окна, процедура-обработчик может отправить в диалоговое окно следующие сообщения.

    Сообщение Значение
    CDM. _ FilePath Извлекает путь и имя выбранного файла.
    CDM _ жетфолдеридлист Извлекает список идентификаторов элементов, соответствующий текущей папке, открытой в этом диалоговом окне. Дополнительные сведения о списках идентификаторов элементов см. в разделе Введение в пространство имен оболочки.
    CDM _ GETFOLDERPATH Возвращает путь к текущей папке или каталогу для диалогового окна.
    CDMая _ Спецификация Извлекает имя файла (не включая путь) файла, выбранного в данный момент в диалоговом окне.
    CDM _ хидеконтрол Скрывает указанный элемент управления.
    CDM _ сетконтролтекст Задает текст в указанном элементе управления.
    CDM _ сетдефекст Задает расширение имени файла по умолчанию для диалогового окна.

    Explorer-Style пользовательских шаблонов

    Чтобы определить дополнительные элементы управления для диалогового окна Открытие или Сохранение в стиле обозревателя, используйте структуру OpenFileName , чтобы указать шаблон для дочернего диалогового окна, содержащего дополнительные элементы управления. Если ваш дочерний шаблон диалогового окна является ресурсом в приложении или библиотеке динамической компоновки, установите флаг ОФН _ енаблетемплате в элементе flags и используйте элементы HINSTANCE и лптемплатенаме структуры, чтобы определить имя модуля и ресурса. Если шаблон уже находится в памяти, установите флаг ОФН _ енаблетемплатехандле и используйте элемент HINSTANCE , чтобы определить объект памяти, содержащий шаблон. При предоставлении шаблона диалогового окна для диалогового окна в стиле обозревателя необходимо также установить флаг _ обозревателя ОФН . в противном случае система предполагает, что вы предоставляли шаблон замены для диалогового окна старого стиля. Как правило, при предоставлении дополнительных элементов управления необходимо также предоставить процедуру обработчика в стиле обозревателя для обработки сообщений для новых элементов управления.

    Вы можете создать свой дочерний шаблон диалогового окна, как и любой другой шаблон, за исключением того, что необходимо указать стили WS _ Child и WS _ клипсиблингс и указать стили DS _ 3DLOOK и _ управления DS . Для работы системы требуется стиль _ дочернего элемента WS , так как шаблон определяет дочернее диалоговое окно открытия или сохранения по умолчанию. Стиль WS _ клипсиблингс гарантирует, что дочернее диалоговое окно не будет перерисовываться над любыми элементами управления в диалоговом окне по умолчанию. Стиль _ 3DLOOK в DS гарантирует, что внешний вид элементов управления в дочернем диалоговом окне будет соответствовать элементам управления в диалоговом окне по умолчанию. Стиль _ элемента управления DS гарантирует, что пользователь может использовать вкладку и другие клавиши навигации для перемещения между всеми элементами управления, по умолчанию или пользовательскими, в диалоговом окне настроено.

    Чтобы освободить место для новых элементов управления, система раскрывает диалоговое окно по умолчанию по ширине и высоте пользовательского диалогового окна. По умолчанию все элементы управления из пользовательского диалогового окна располагаются под элементами управления в диалоговом окне по умолчанию. Однако можно переопределить это положение по умолчанию, включив Статический элемент управления «текст» в пользовательский шаблон диалогового окна и назначив ему значение идентификатора элемента управления stc32. (Это значение определено в файле заголовка Длгс. h.) В этом случае система использует элемент управления в качестве точки ссылки для определения места размещения новых элементов управления. Все новые элементы управления, расположенные выше и слева от элемента управления stc32 , располагаются в том же размере, что и слева от элементов управления в диалоговом окне по умолчанию. Новые элементы управления, расположенные ниже и справа от элемента управления stc32 , располагаются ниже и справа от элементов управления по умолчанию. Как правило, каждый новый элемент управления размещается так, чтобы его расположение совпадало с элементами управления по умолчанию, как и в элементе управления stc32 . Чтобы освободить место для этих новых элементов управления, система добавляет пробелы в левую, правую, нижнюю и верхнюю часть диалогового окна по умолчанию по мере необходимости.

    Система требует, чтобы процедура обработчика обрабатывала все сообщения, предназначенные для пользовательского диалогового окна, и, таким образом, отправляет те же сообщения окна процедуре обработки, что и любые другие диалоговые окна. Например, процедура-обработчик принимает сообщения _ команды WM , когда пользователь щелкает элемент управления «Кнопка» в пользовательском диалоговом окне. Процедура-ловушка отвечает за инициализацию этих элементов управления и получение значений из элементов управления при закрытии диалогового окна. Обратите внимание, что когда процедура-обработчик получает сообщение WM _ инитдиалог , система еще не переместила элементы управления на свои конечные позиции.

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

    Идентификаторы элементов управления Explorer-Style

    пакет средств разработки Windows Software Development Kit (SDK) предоставляет шаблон диалогового окна по умолчанию для диалоговых окон старого стиля, но не включает шаблон по умолчанию для диалоговых окон в стиле обозревателя. Это связано с тем, что диалоговые окна в стиле обозревателя позволяют добавлять собственные элементы управления, но не поддерживают изменение шаблона для стандартных элементов управления. Однако в некоторых случаях может потребоваться знать идентификаторы элементов управления, используемые в шаблонах по умолчанию. Например, для сообщений CDM _ Хидеконтрол и CDM _ сетконтролтекст требуется идентификатор элемента управления.

    В следующей таблице показаны идентификаторы стандартных элементов управления в диалоговых окнах Открытие и Сохранение в стиле обозревателя. Идентификаторы — это константы, определенные в Длгс. h и Winuser. h.

    Идентификатор элемента управления Описание элемента управления
    chx1 Флажок только для чтения
    cmb1 Раскрывающееся поле со списком, в котором отображается список фильтров типов файлов
    stc2 Метка для поля со списком cmb1
    cmb2 Раскрывающийся список, отображающий текущий диск или папку, который позволяет пользователю выбрать диск или папку для открытия
    stc4 Метка для поля со списком cmb2
    cmb13 Раскрывающийся список, отображающий имя текущего файла, позволяет пользователю ввести имя открываемого файла и выбрать файл, который был открыт или сохранен недавно. Это предназначено для ранее совместимых с обозревателем приложений без обработчика или шаблона диалогового окна. Сравните с edt1.
    edt1 Элемент управления «поле ввода», который отображает имя текущего файла, или позволяет пользователю ввести имя открываемого файла. Сравните с cmb13.
    stc3 Метка для поля со списком cmb13 и элемента управления Edit edt1
    lst1 Список, отображающий содержимое текущего диска или папки
    stc1 Метка для списка lst1
    IDOK Кнопка « ОК » (кнопка «Отправить»)
    IDCANCEL Кнопка «Отмена» (кнопка «Отправить»)
    пшхелп Кнопка « Справка » (кнопка «Отправить»)

    Настройка диалоговых окон Old-Style

    Можно настроить диалоговое окно Открытие или Сохранение в старом стиле, предоставив процедуру-обработчик офнхукпроколдстиле , которая получает сообщения или уведомления, предназначенные для процедуры диалогового окна по умолчанию. Можно также указать пользовательский шаблон, который будет использоваться вместо шаблона по умолчанию. Процедуры-ловушки и шаблоны, используемые с диалоговыми окнами старого стиля, похожи на те, которые используются в других общих диалоговых окнах. Дополнительные сведения см. в разделе процедуры-обработчики для общих диалоговых окон и пользовательских шаблонов.

    Чтобы включить процедуру-обработчик для диалогового окна Открытие или Сохранение в старом стиле, используйте структуру OpenFileName при создании диалогового окна. Установите флаг ОФН _ енаблехук в элементе flags и укажите адрес процедуры-обработчика офнхукпроколдстиле в элементе лпфнхук . Процедура диалогового окна отправляет в процедуру-обработчику сообщение WM _ инитдиалог с параметром param , которому задан адрес структуры OpenFileName , используемой для инициализации диалогового окна.

    Структуру OpenFileName можно использовать для указания пользовательского шаблона для диалогового окна Открыть или Сохранить как , используемого вместо шаблона по умолчанию. Если пользовательский шаблон является ресурсом в приложении или библиотеке динамической компоновки, установите флаг ОФН _ енаблетемплате в элементе flags и используйте элементы HINSTANCE и лптемплатенаме структуры для обозначения имени модуля и ресурса. Если пользовательский шаблон уже находится в памяти, установите флаг ОФН _ енаблетемплатехандле и используйте элемент HINSTANCE , чтобы определить объект памяти, содержащий шаблон. Создайте пользовательский шаблон, изменив шаблон по умолчанию, указанный в файле FileOpen. DLG. Идентификаторы элементов управления, используемые в шаблонах диалоговых окон поиска и замены по умолчанию, определяются в файле Длгс. h.

    По умолчанию функции GetOpenFilename и жетсавефиленаме отображают диалоговые окна в стиле обозревателя. Если требуется отобразить диалоговое окно старого стиля, необходимо предоставить процедуру-обработчик офнхукпроколдстиле и убедиться, что флаг ОФН _ Explorer не установлен в элементе flags структуры OpenFileName .

    Если установлен флаг _ обозревателя ОФН , система рассматривает процедуру-обработчик или пользовательский шаблон как настройку в стиле обозревателя. Сведения о настройке диалогового окна в стиле обозревателя см. в разделе пользовательские шаблоны в стиле обозревателя.

    Источник

    Читайте также:  Способ как сорвать урок
    Оцените статью
    Разные способы