Что такое диалоговое окно команды

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

Диалоговое окно (англ. dialog box ) — в графическом пользовательском интерфейсе специальный элемент интерфейса, окно, предназначенное для вывода информации и (или) получения ответа от пользователя. Получил своё название потому, что осуществляет двустороннее взаимодействие компьютер-пользователь («диалог»): сообщая пользователю что-то и ожидая от него ответа.

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

Что такое диалоговое окно команды. Смотреть фото Что такое диалоговое окно команды. Смотреть картинку Что такое диалоговое окно команды. Картинка про Что такое диалоговое окно команды. Фото Что такое диалоговое окно команды

Что такое диалоговое окно команды. Смотреть фото Что такое диалоговое окно команды. Смотреть картинку Что такое диалоговое окно команды. Картинка про Что такое диалоговое окно команды. Фото Что такое диалоговое окно команды

Содержание

Кнопки

Что такое диалоговое окно команды. Смотреть фото Что такое диалоговое окно команды. Смотреть картинку Что такое диалоговое окно команды. Картинка про Что такое диалоговое окно команды. Фото Что такое диалоговое окно команды

В диалоговых окнах многих программ присутствуют кнопки OK и Отмена (Cancel), нажимая первую из которых пользователь выражает своё согласие с тем, что в этот момент отображает диалоговое окно, и тем самым закрывает его, приводя в действие сделанные в нём изменения, а вторая — закрывает окно без применения. Существуют варианты с единственной кнопкой ОК — в информирующих окнах, не подразумевающих каких-либо изменений, и с кнопками ОК, Применить (Apply) и Закрыть (Close), в окнах, результаты изменений в которых пользователь, по мнению автора программы, может оценить не закрывая окна, и в случае неудовлетворительного результата продолжить внесение изменений.

Так же хорошим тоном считается обеспечить в диалоговых окнах справочную систему — обычно это реализуется либо в виде кнопки Справка (Help), открывающей страницу документации, описывающую работу в этом диалоговом окне, либо (в Windows) с помощью кнопки с знаком вопрос в заголовке окна, нажав на которую пользователь переключает мышь в режим одноразовой контекстной подсказки: нажатие мышью в этом режиме на элемент диалогового окна вызывает отображение описания этого элемента.

Немодальные диалоговые окна

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

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

Модальные на уровне приложения

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

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

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

Модальные на уровне окна

Для смягчения недостатков модальных диалоговых окон (блокирование доступа к приложению, или, даже, к системе в целом) была предложена концепция модальности на уровне окна (или документа). Такой тип диалогового окна введён, например, в Mac OS X, где он называется «диалоговое модальное окно для документа» (англ. document modal sheet ).

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

Примечания

Ссылки

Кнопка последовательного выбора • Двунаправленный счётчик • Выпадающий список • Комбинированный список • Флажок • Ползунок • Радиокнопка • Список • Таблица (Grid view) • Текстовое поле

Heads-up display (в играх • OSD) • Боковая панель • Заставка • Значок • Индикатор процесса • Информационная панель • Метка • Подсказка • Строка состояния • Тост • Троббер • Экран загрузки

Диалоговое окно • Диалоговое окно-предупреждение • Модальное окно • О программе • Окно инспектора объектов • Окно-палитра • Файловый диалог

WIMP • Библиотека элементов интерфейса • Внешний вид (Look and feel) • Менеджер разметки (Layout manager) • Наведение мыши

Macintosh Toolbox/Carbon • Windows API • Intrinsics • Intuition • Xlib

BOOPSI • Magic User Interface • Zune • ReAction GUI

Cocoa • MacApp • MacZoop • PowerPlant

ASWing • Adobe Flex • Gnash • SWF2EXE Software

Ample SDK • CougarXML • Dojo Toolkit • Echo • ExtJS • GladeXML • Google Web Toolkit • jQuery • Lively Kernel • MooTools • Pyjamas • qooxdoo • Rialto Toolkit • script.aculo.us • XML User Interface • XUL • Yahoo! UI Library

Agar • CEGUI • Component Library for Cross Platform • dlib C++ Library • FLTK • FOX toolkit • OpenGL User Interface Library • GTK+ • IUP • Juce • JX Application Framework • Qt • TnFOX • Visual Component Framework • wxWidgets • YAAF • XForms • XVT • Ultimate++

CAPI • Common Graphics • CLIM • McCLIM • Garnet

Pyjamas • PyQt • PyGTK • PyGUI • wxPython • PySide • Tkinter

Источник

Использование диалоговых окон

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

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

Отображение окна сообщения

В следующем примере приложение отображает окно сообщения, предлагающее пользователю ввести действие после возникновения ошибки. В окне сообщения отобразится сообщение с описанием условия ошибки и способами ее устранения. _ Данет в стиле «МБ» направляет MessageBox для предоставления двух кнопок, с помощью которых пользователь может выбрать способ продолжения:

На следующем рисунке показаны выходные данные предыдущего примера кода:

Что такое диалоговое окно команды. Смотреть фото Что такое диалоговое окно команды. Смотреть картинку Что такое диалоговое окно команды. Картинка про Что такое диалоговое окно команды. Фото Что такое диалоговое окно команды

Создание модального диалогового окна

Следующие инструкции создают модальное диалоговое окно. Шаблон диалогового окна — это ресурс в исполняемом файле приложения с идентификатором ресурса DLG _ DELETEITEM.

Создание немодального диалогового окна

В приведенных выше инструкциях креатедиалог вызывается, только если не hwndGoto содержит допустимый обработчик окна. Это гарантирует, что приложение не будет одновременно отображать два диалоговых окна. Для поддержки этого метода процедура диалогового окна должна иметь значение null при уничтожении диалогового окна.

Цикл обработки сообщений для приложения состоит из следующих инструкций.

В следующих инструкциях определяется процедура диалогового окна.

Инициализация диалогового окна

В приведенных выше инструкциях процедура использует функцию getHandler для получения маркера окна-владельца для диалогового окна. Функция возвращает обработчик окна владельца в диалоговые окна, а родительский окно — в дочерние окна. Поскольку приложение может создать диалоговое окно, не имеющее владельца, процедура проверяет возвращенный обработчик и использует функцию жетдесктопвиндов для получения маркера окна рабочего стола при необходимости. После вычисления новой должности процедура использует функцию SetWindowPos для перемещения диалогового окна, указывая _ верхнее значение HWND, чтобы убедиться, что диалоговое окно остается в верхней части окна владельца.

Создание шаблона в памяти

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

В следующем примере приложение создает шаблон в памяти для модального диалогового окна, содержащего сообщение и кнопки « ОК » и « Справка ».

В шаблоне диалогового окна все символьные строки, например диалоговые окна и заголовки кнопок, должны быть строками в Юникоде. В этом примере используется функция MultiByteToWideChar для создания этих строк Юникода.

Источник

Что такое диалоговое окно? Разделы диалогового окна

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

Особенности и внешний вид

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

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

Окно сообщений

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

Что такое диалоговое окно команды. Смотреть фото Что такое диалоговое окно команды. Смотреть картинку Что такое диалоговое окно команды. Картинка про Что такое диалоговое окно команды. Фото Что такое диалоговое окно команды

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

Ввод информации

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

Сохранение/открытие файла

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

Что такое диалоговое окно команды. Смотреть фото Что такое диалоговое окно команды. Смотреть картинку Что такое диалоговое окно команды. Картинка про Что такое диалоговое окно команды. Фото Что такое диалоговое окно команды

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

Диалоговое окно печати документа

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

Что такое диалоговое окно команды. Смотреть фото Что такое диалоговое окно команды. Смотреть картинку Что такое диалоговое окно команды. Картинка про Что такое диалоговое окно команды. Фото Что такое диалоговое окно команды

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

Вкладки

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

Фрейм

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

Что такое диалоговое окно команды. Смотреть фото Что такое диалоговое окно команды. Смотреть картинку Что такое диалоговое окно команды. Картинка про Что такое диалоговое окно команды. Фото Что такое диалоговое окно команды

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

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

Элементы управления

Коротко скажем о других элементах, которые могут присутствовать:

1. Командные кнопки диалогового окна. Служат для запуска какого-нибудь действия. Это может быть открытие другого окна или выполнение процедуры.

2. Переключатели. Позволяют выбрать один вариант из набора значений.

3. Флажки. С их помощью можно отметить несколько вариантов из предложенных или отказаться от всех.

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

5. Текстовые поля. Предназначены для ввода в них произвольного текста или числовых данных.

6. Ползунок. Позволяет задать числовое значение параметра из заданного диапазона.

7. Счетчик. Служит для выбора целочисленного значения.

8. Полосы прокрутки. Бывают вертикальными и горизонтальными. Применяются, когда часть формы не помещается в окне.

9. Метка. Элемент, отвечающий за надписи на форме.

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

Что такое диалоговое окно команды. Смотреть фото Что такое диалоговое окно команды. Смотреть картинку Что такое диалоговое окно команды. Картинка про Что такое диалоговое окно команды. Фото Что такое диалоговое окно команды

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

Клавиатурные комбинации

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

Дизайн окон

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

Что такое диалоговое окно команды. Смотреть фото Что такое диалоговое окно команды. Смотреть картинку Что такое диалоговое окно команды. Картинка про Что такое диалоговое окно команды. Фото Что такое диалоговое окно команды

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

Источник

диалоговые окна «О программе»

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

Этот обзор включает в себя следующие разделы:

Дополнительные сведения об общих диалоговых окнах см. в разделе Библиотека общих диалоговыхокон.

Когда следует использовать диалоговое окно

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

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

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

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

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

Окно «владелец» диалогового окна

Большинство диалоговых окон имеют окно-владелец (или более просто, владелец). При создании диалогового окна приложение задает владельца, указывая его маркер в окне. Система использует владельца для определения расположения диалогового окна в Z-порядке, чтобы диалоговое окно всегда расположиться над его владельцем. Кроме того, система может отправлять сообщения в процедуру окна владельца, уведомляя его о событиях в диалоговом окне.

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

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

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

Окна сообщений

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

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

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

Модальные диалоговые окна

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

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

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

Немодальные диалоговые окна

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

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

Шаблоны диалоговых окон

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

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

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

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

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

Стили шаблонов диалоговых окон

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

Система передает все стили окна, указанные в шаблоне, в функцию CreateWindowEx при создании диалогового окна. Система может передать один или несколько расширенных стилей в зависимости от указанных стилей диалогового окна. Например, если шаблон указывает DS _ модалфраме, система использует WS _ ex _ длгмодалфраме при создании диалогового окна.

Измерения диалоговых окон

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

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

Элементы управления диалогового окна

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

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

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

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

Меню окна диалогового окна

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

Шрифты диалогового окна

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

Шрифт системы может различаться в разных версиях Windows. Чтобы приложение использовало системный шрифт независимо от того, на какой системе он работает, используйте DS _ шеллфонт с гарнитурой MS Shell Dlg и используйте ресурс диаложекс вместо ресурса диалогового окна. Система сопоставляет эту гарнитуру, чтобы в диалоговом окне использовался шрифт Tahoma. Обратите внимание, что служба DS _ шеллфонт не действует, если гарнитура не является MS Shell Dlg.

Шаблоны в памяти

Для различения стандартного шаблона и расширенного шаблона Проверьте первые 16 бит шаблона диалогового окна. В расширенном шаблоне первое слово — 0xFFFF; любое другое значение указывает на стандартный шаблон.

Заголовок шаблона

В стандартных и расширенных шаблонах для диалоговых окон заголовок содержит следующие общие сведения:

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

Определения элементов управления

В стандартном и расширенном шаблонах определение элемента управления включает следующие сведения:

Источник

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

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