Большинство прикладных программ использует диалоговые окна, чтобы запросить дополнительную информацию для для пунктов меню, которые требуют ввода данных от пользователя. Использование диалогового окна - единственный рекомендуемый способ для прикладной программы, чтобы получить ввод данных. Например, обычный пункт меню Открыть (Open) требует имени открываемого файла, так что прикладная программа должна использовать диалоговое окно, чтобы запросить у пользователя это имя. В таких случаях, прикладная программа создает диалоговое окно, когда пользователь щелкает по пункту меню и уничтожает его немедленно после того, как пользователь подаст эту информацию.
Многие приложения используют диалоговые окна также и для того, чтобы отобразить информацию или параметры, в то время как пользователь работает в другом окне. Например, программы обработки текстов часто используют диалоговое окно по команде поиска фрагмента текста. До тех пор, пока прикладная программа ищет текст, диалоговое окно остается на экране. Пользователь может затем возвратиться в диалоговое окно и искать то же самое слово снова; или может изменить запись в диалоговом окне и искать новое слово. Прикладные программы, которые используют диалоговые окна таким образом, обычно создают его тогда, когда пользователь щелкает по пункту меню и продолжают показывать его на экране до тех пор, пока прикладная программа выполняется, или пока пользователь явно не закроет диалоговое окно.
Чтобы поддерживать использование диалоговых окон различными программами, существует два типа диалогового окна: модальное и немодальное.
Модальное диалоговое окно (modal dialog box ) требует, чтобы пользователь предоставил информацию или отменил диалоговое окно перед разрешением продолжения работы прикладной программе. Приложения используют модальные диалоговые окна вместе с пунктами меню, которые требуют дополнительной информации прежде, чем они смогут продолжать действовать. Немодальное диалоговое окно (modeless dialog box) позволяет пользователю предоставлять информацию и возвращаться к предыдущей задаче без закрытия диалогового окна. Модальные диалоговые окна проще для управления, чем немодальные, потому что они создаются, исполняют свою задачу и разрушаются вызовом единственной функции.Чтобы создать или модальное, или немодальное диалоговое окно, прикладная программа должна снабдить блок диалога шаблоном, чтобы описать стиль и содержание диалогового окна; приложение должно также снабдить диалоговое окно процедурой, чтобы выполнять задачи.
Шаблон диалогового окна (dialog box template) - бинарное описание диалогового окна и органов управления, которое оно содержит. Разработчик может создать этот шаблон как ресурс, который будет загружен из исполняемого файла прикладной программы, или создать в памяти, пока прикладная программа выполняется. Процедура диалогового окна (dialog box procedure) - определяемая программой функция повторного вызова, которую система вызывает, когда операционная система получает ввод данных для диалогового окна или задачу для выполнения в блоке диалога. Хотя процедура диалогового окна подобна оконной процедуре, у нее нет тех же самых обязанностей.Приложение обычно создает диалоговое окно, используя либо функцию
DialogBox, либо CreateDialog. DialogBox создает модальное диалоговое окно; CreateDialog создает немодальное диалоговое окно. Эти две функции загружают шаблон диалогового окна из исполняемого файла прикладной программы и создают выскакивающее окно, которое соответствует спецификации шаблона. Имеются и другие функции, которые создают диалоговое окно, используя шаблоны в памяти; они передают дополнительную информацию в процедуру диалогового окна, как создается диалоговое окно.Диалоговые окна обычно принадлежат предопределенному, особенному классу окна. Система использует этот класс окна и его соответствующую оконную процедуру и для модальных, и для немодальных диалоговых окон. Когда функция вызывается, она создает окно блока диалога, такое же как и окна для органов управления в диалоговом окне, затем отправляет выбранные сообщения процедуре блока диалога. Пока диалоговое окно видимо, предопределенная оконная процедура управляет всеми сообщениями, обрабатывая некоторые из них и передавая другие процедуре диалогового окна так, чтобы процедура могла выполнять задачи. Прикладные программы не имеют прямого доступа к предопределенному классу окна или оконной процедуре, но они могут использовать шаблон диалогового окна и процедуру диалогового окна, чтобы изменить стиль и поведение диалогового окна.