Как вызвать диалоговое окно
Перейти к содержимому

Как вызвать диалоговое окно

  • автор:

7 способов открыть диалоговое окно «Выполнить» в Windows 10.

Диалоговое окно «Выполнить» позволяет запускать программы, приложения, открывать разделы параметров системы и Панели управления, запускать огромное количество системных команд или встроенных в Windows инструментов, таких как командная строка, редактор реестра, редактор локальной групповой политики, очистка диска и т.д. Просто введите путь или быструю команду в поле «Выполнить», а затем нажмите «ОК» или Enter, чтобы использовать команду. На первый взгляд диалоговое окно «Выполнить» не так легко найти в последних версиях Windows, но, этот инструмент все еще существует и есть множество способов получить к нему доступ. В этом руководстве показано, как открыть диалог «Выполнить» в Windows 10:

1. Откройте диалоговое окно «Выполнить» с помощью сочетания клавиш.

Самый быстрый способ получить доступ к окну «Выполнить» — использовать сочетание клавиш Windows + R. Помимо того, что этот способ очень легко запомнить, он универсален для всех версий Windows. Удерживая клавишу Windows на клавиатуре, нажмите R .

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

Откройте диалоговое окно «Выполнить» с помощью сочетания клавиш.

2. Используйте Поиск, чтобы открыть окно «Выполнить».

Как всегда, использовать поиск Windows чтобы что нибудь найти — отличная идея. Если вы используете Windows 10, введите слово «выполнить» в строке поиска.

Затем нажмите соответствующий результат поиска или нажмите кнопку «Открыть» на панели справа.

Используйте Поиск, чтобы открыть окно «Выполнить».

3. Откройте командное окно «Выполнить» из меню «Пуск».

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

Откройте в меню «Пуск», кликнув на логотип Windows в нижнем левом углу или нажав кнопку Windows на клавиатуре. Затем прокрутите вниз и найдите папку «Служебные — Windows», откройте папку и нажмите «Выполнить».

Откройте командное окно «Выполнить» из меню «Пуск».

Здесь вы также сможете закрепить команду на начальном экране или панели задач.

В Windows 7 откройте меню «Пуск» и выберите «Все программы → Стандартные → Выполнить».

4. Используйте Командную строку (CMD), чтобы открыть окно «Выполнить».

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

Запустите командную строку и введите следующее:

explorer.exe Shell.

Используйте Командную строку (CMD), чтобы открыть окно «Выполнить»

Этот способ работает как в Windows 10, так и в Windows 7.

5. Откройте командное окно «Выполнить» с помощью PowerShell.

Не знаете, как открыть диалог из PowerShell в Windows 10 и Windows 7? Сначала запустите PowerShell. Затем скопируйте / вставьте или введите следующую команду:

(New-Object -ComObject "Shell.Application").FileRun()

Нажмите Enter , и в нижнем левом углу сразу же откроется окно команды «Выполнить».

Откройте командное окно «Выполнить» с помощью PowerShell.

6. Используйте меню WinX, чтобы открыть окно «Выполнить» в Windows 10.

В Windows 10 есть скрытое меню опытного пользователя, в котором есть пункт для запуска окна «Выполнить». Есть много способов получить доступ к этому меню, самый простой — использовать сочетание клавиш Windows + X . Затем кликните мышкой «Выполнить» или нажмите букву R на клавиатуре, чтобы открыть окно.

 Используйте меню WinX, чтобы открыть окно «Выполнить» в Windows 10.

7. Получить доступ к команде «Выполнить» с помощью Диспетчера задач.

Откройте диспетчер задач с помощью меню WinX или нажмите сочетание клавиш Ctrl Shift ESC ,

Кликните мышкой меню «Файл» и выберите «Запустить новую задачу».

Получить доступ к команде «Выполнить» с помощью Диспетчера задач.

Обратите внимание, здесь вы можете создать задачу с правами администратора.

Все!

К чему вы хотите получить доступ с помощью окна «Выполнить»?

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

Рекомендуем:

  • Windows 10 Rundll32 Команды — полный список
  • CLSID (GUID) Список расположения Shell в Windows 10
  • Полный список переменных сред в Windows 10
  • Используйте адресную строку Проводника в Windows 10 как команду «Выполнить».

Диалоговые окна и всплывающие элементы

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

Диалоги

Example of a dialog

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

Всплывающие элементы

Example of a flyout

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

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

Выбор правильного элемента управления

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

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

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

Используйте диалоговое окно в следующих целях.

  • Выражение важных сведений, которые пользователь должен прочитать и подтвердить перед продолжением. Примеры:
    • Если безопасность пользователя может быть скомпрометирована
    • Когда пользователь будет постоянно изменять ценный ресурс
    • Когда пользователь собирался удалить ценный ресурс
    • Подтверждение покупки в приложении

    Используйте всплывающий элемент в следующих целях.

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

    Как избавиться от ненужных диалоговых окон и всплывающих элементов

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

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

    Примеры

    • Если у вас установлено приложение из коллекции WinUI 3, щелкните здесь, чтобы открыть его и увидеть ContentDialog или Flyout в действии. Получите приложение из Microsoft Store или получите исходный код в GitHub.

    Как вызвать диалоговое окно

    Каким образом можно вызвать диалоговое окно?

    Ответ мастера:

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

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

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

    Во-вторых, это окно открытия файла или какого-нибудь документа. Его можно вызвать, если нажать клавишу под названием «Открыть». Данная кнопка всегда находится в панели инструментов программы, которую вы используете в своей работе. После этих действий перед вами откроется изображение папки, которая открыта. Кроме того, вы можете вызвать данное диалоговое окно, если будет использовать меню «Файл», а в нем пункт «Открыть». Подобное действие вы можете провести, если нажмете одновременно клавиши «Ctrl» и «О».

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

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

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

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

    Диалоговые окна «Открыть» и «Сохранить как»

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

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

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

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

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

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

    Диалоговое окно

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

    Диалоговое окно сохранения файла

    Если пользователь указывает имя файла и нажимает кнопку ОК , getOpenFileName или GetSaveFileName возвращает значение TRUE. Буфер, на который указывает элемент lpstrFile структуры OPENFILENAME , содержит полный путь и имя файла, указанные пользователем.

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

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

    • Имена файлов и каталоги
    • Фильтры
    • Проверка файлов и каталогов
    • Настройка диалогового окна «Открыть и сохранить как»
    • Обозреватель процедуры перехватчика
    • Пользовательские шаблоны в стиле Обозреватель
    • Идентификаторы элементов управления в стиле Обозреватель
    • Настройка диалоговых окон Old-Style

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

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

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

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

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

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

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

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

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

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

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

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

    Фильтры

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

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

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

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

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

    OPENFILENAME ofn; // common dialog box structure ofn.lpstrFilter = "Source\0*.C;*.CXX\0All\0*.*\0" ofn.nFilterIndex = 1; 

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

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

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

    Сообщение CDN_INCLUDEITEM уведомления предоставляет еще один способ фильтрации имен, отображаемых в диалоговом окне. Чтобы использовать это сообщение, укажите процедуру перехватчика OFNHookProc и укажите флаг OFN_ENABLEINCLUDENOTIFY в структуре OPENFILENAME при создании диалогового окна. Каждый раз, когда пользователь открывает папку, диалоговое окно отправляет CDN_INCLUDEITEM уведомление в процедуру перехватчика для каждого элемента в открывшейся папке. Возвращаемое значение процедуры перехватчика указывает, должно ли диалоговое окно отображать элемент в списке элементов папки.

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

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

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

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

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

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

    Если включить процедуру перехватчика, диалоговое окно уведомляет вашу процедуру перехватчика о нарушении общего доступа к сети для имени файла, указанного пользователем. Если вы задали флаг OFN_EXPLORER , диалоговое окно отправляет CDN_SHAREVIOLATION сообщение в процедуру перехватчика. Если не задать OFN_EXPLORER, диалоговое окно отправляет зарегистрированное сообщение SHAREVISTRING в процедуру перехватчика. Чтобы предотвратить отправку в диалоговом окне уведомлений о нарушениях общего доступа, установите флаг OFN_SHAREAWARE .

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

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

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

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

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

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

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

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

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

    HKEY_CURRENT_USER Software Microsoft Windows CurrentVersion Policies Comdlg32 
    Имя значения Значение Значение
    NoPlacesBar 1 Скрывает панель мест.
    NoFileMRU 1 Скрывает список последних использованных (MRU).
    NoBackButton 1 Скрывает кнопку Назад .

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

    HKEY_CURRENT_USER Software Microsoft Windows CurrentVersion Policies Comdlg32 Placesbar 

    В настоящее время в этом ключе может быть только пять записей, а индекс значения и имени основан на нулях. Имена записей должны быть Place0, Place1, Place2, Place3 и Place4. Значения записей могут быть REG_DWORD, REG_SZ или REG_EXPAND_SZ значениями, определяющими расположения для включения в строку мест.

    Тип значения Значение
    REG_DWORD Значение CSIDL, определяющее папку. Список значений CSIDL см. в разделе Значения CSIDL.
    REG_SZ или REG_EXPAND_SZ Строка, завершающаяся значением NULL, указывающая допустимый путь.

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

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

    Чтобы включить процедуру перехватчика для диалогового окна Открыть или Сохранить как в стиле Обозреватель, при создании диалогового окна используйте структуру OPENFILENAME. Задайте флаги OFN_ENABLEHOOK и OFN_EXPLORER в элементе Flags и укажите адрес процедуры перехватчика OFNHookProc в элементе lpfnHook . Если вы указали процедуру перехватчика и опустите флаг OFN_EXPLORER , необходимо использовать процедуру перехватчика OFNHookProcOldStyle , и вы получите пользовательский интерфейс старого стиля. Дополнительные сведения см. в разделе Настройка диалоговых окон Old-Style.

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

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

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

    Если вы предоставляете процедуру перехватчика для диалогового окна Обозреватель стиле, процедура диалогового окна по умолчанию создает дочернее диалоговое окно, когда диалоговая процедура по умолчанию обрабатывает WM_INITDIALOG сообщение. Процедура перехватчика выступает в качестве процедуры диалога для дочернего диалогового окна. В настоящее время процедура перехватчика получает собственное сообщение WM_INITDIALOG с параметром lParam , равным адресу структуры OPENFILENAME , используемой для инициализации диалогового окна. После того как дочерний диалог завершит обработку собственного сообщения WM_INITDIALOG , процедура диалога по умолчанию перемещает стандартные элементы управления, если это необходимо, чтобы освободить место для дополнительных элементов управления дочернего диалогового окна. Затем диалоговое окно по умолчанию отправляет CDN_INITDONE сообщение уведомления в процедуру перехватчика.

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

    Параметр lParam для каждого сообщения WM_NOTIFY является указателем на структуру OFNOTIFY или OFNOTIFYEX , которая определяет действие. Элемент кода в заголовке этой структуры содержит одно из следующих сообщений уведомления.

    Сообщение Значение
    CDN_FILEOK Пользователь нажал кнопку ОК ; диалоговое окно будет закрыто.
    CDN_FOLDERCHANGE Пользователь открыл новую папку или каталог.
    CDN_HELP Пользователь нажал кнопку Справка .
    CDN_INCLUDEITEM Определяет, должен ли отображаться элемент. Когда пользователь открывает новую папку или каталог, система отправляет это уведомление для каждого элемента в папке или каталоге. Система отправляет это уведомление только в том случае, если был установлен флаг OFN_ENABLEINCLUDENOTIFY .
    CDN_INITDONE Система завершила инициализацию диалогового окна, а диалоговое окно завершило обработку сообщения WM_INITDIALOG . Кроме того, система завершила размещение элементов управления в общем диалоговом окне, чтобы освободить место для элементов управления дочернего диалогового окна (если таковые имеются).
    CDN_SELCHANGE Пользователь выбрал новый файл или папку из списка файлов.
    CDN_SHAREVIOLATION В обычном диалоговом окне обнаружено нарушение общего доступа к файлу, который должен быть возвращен.
    CDN_TYPECHANGE Пользователь выбрал новый тип файла из списка типов файлов.

    Эти WM_NOTIFY сообщения заменяют зарегистрированные сообщения FILEOKSTRING, LBSELCHSTRING, SHAREVISTRING и HELPMSGSTRING , используемые в предыдущих версиях диалоговых окон Открыть и Сохранить как . Однако процедура перехватчика также получает замененное сообщение после сообщения WM_NOTIFY , если обработка WM_NOTIFY не использует SetWindowLong для задания ненулевого DWL_MSGRESULT значения.

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

    Сообщение Значение
    CDM_GETFILEPATH Извлекает путь и имя выбранного файла.
    CDM_GETFOLDERIDLIST Извлекает список идентификаторов элементов, соответствующий текущей папке, открытой в диалоговом окне. Дополнительные сведения о списках идентификаторов элементов см. в статье Общие сведения о пространстве имен оболочки.
    CDM_GETFOLDERPATH Извлекает путь к текущей папке или каталогу для диалогового окна.
    CDM_GETSPEC Извлекает имя файла (не включая путь) файла, выбранного в диалоговом окне.
    CDM_HIDECONTROL Скрывает указанный элемент управления.
    CDM_SETCONTROLTEXT Задает текст в указанном элементе управления.
    CDM_SETDEFEXT Задает расширение имени файла по умолчанию для диалогового окна.

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

    Чтобы определить дополнительные элементы управления для диалогового окна Открыть или Сохранить как в стиле Обозреватель, используйте структуру OPENFILENAME, чтобы указать шаблон для дочернего диалогового окна, содержащего дополнительные элементы управления. Если дочерний шаблон диалогового окна является ресурсом в приложении или библиотеке динамической компоновки, установите флаг OFN_ENABLETEMPLATE в элементе Flags и используйте элементы hInstance и lpTemplateName структуры для идентификации модуля и имени ресурса. Если шаблон уже находится в памяти, установите флаг OFN_ENABLETEMPLATEHANDLE и используйте элемент hInstance для идентификации объекта памяти, содержащего шаблон. При указании дочернего шаблона диалога для диалогового окна в Обозреватель стиле необходимо также установить флаг OFN_EXPLORER. В противном случае система предполагает, что вы предоставляете шаблон замены для диалогового окна старого стиля. Как правило, если вы предоставляете дополнительные элементы управления, необходимо также предоставить Обозреватель процедуру перехватчика для обработки сообщений для новых элементов управления.

    Вы можете создать шаблон дочернего диалогового окна так же, как и любой другой шаблон, за исключением того, что необходимо указать стили WS_CHILD и WS_CLIPSIBLINGS , а также указать стили DS_3DLOOK и DS_CONTROL . Системе требуется стиль WS_CHILD , так как шаблон определяет дочерний диалог диалогового окна по умолчанию Открыть или Сохранить как . Стиль WS_CLIPSIBLINGS гарантирует, что дочернее диалоговое окно не будет закрашивать ни один из элементов управления в диалоговом окне по умолчанию. Стиль DS_3DLOOK гарантирует, что внешний вид элементов управления в дочернем диалоговом окне соответствует элементам управления в диалоговом окне по умолчанию. Стиль DS_CONTROL гарантирует, что пользователь может использовать tab и другие клавиши навигации для перемещения между всеми элементами управления (по умолчанию или пользовательскими) в настраиваемом диалоговом окне.

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

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

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

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

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

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

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

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

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

    Чтобы включить процедуру перехватчика для диалогового окна «Открыть » или «Сохранить как «, используйте структуру OPENFILENAME при создании диалогового окна. Установите флаг OFN_ENABLEHOOK в элементе Flags и укажите адрес процедуры перехватчика OFNHookProcOldStyle в элементе lpfnHook . Процедура диалогового окна отправляет WM_INITDIALOG сообщение в процедуру перехватчика с параметром Param, заданным в адрес структуры OPENFILENAME , используемой для инициализации диалогового окна.

    С помощью структуры OPENFILENAME можно указать настраиваемый шаблон для диалогового окна Открыть или Сохранить как вместо шаблона по умолчанию. Если настраиваемый шаблон является ресурсом в приложении или библиотеке динамической компоновки, установите флаг OFN_ENABLETEMPLATE в элементе Flags и используйте элементы hInstance и lpTemplateName структуры для идентификации модуля и имени ресурса. Если пользовательский шаблон уже находится в памяти, установите флаг OFN_ENABLETEMPLATEHANDLE и используйте элемент hInstance для идентификации объекта памяти, содержащего шаблон. Создайте пользовательский шаблон, изменив шаблон по умолчанию, указанный в файле Fileopen.dlg. Идентификаторы элементов управления, используемые в шаблонах диалогов поиска и замены по умолчанию, определяются в файле Dlgs.h.

    По умолчанию функции GetOpenFileName и GetSaveFileName отображают диалоговые окна в стиле Обозреватель. Если вы хотите отобразить диалоговое окно старого стиля, необходимо указать процедуру перехватчика OFNHookProcOldStyle и убедиться, что флаг OFN_EXPLORER не задан в элементе Flags структуры OPENFILENAME .

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

    См. также раздел

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *