Удобным средством организации взаимодействия пользователя и приложения являются диалоговые панели. Многие приложения даже могут успешно работать и без главного окна, взаимодействуя с пользователем только через диалоговые окна.
Библиотека классов MFC содержит класс CDialog, специально предназначенный для управления диалоговыми панелями. Диалоговые панели бывают двух типов - модальные и немодальные.
После отображения модальных диалоговых панелей блокируется родительское окно и все его дочерние окна. Пользователь не может продолжить работу с приложением, пока не закроет модальную диалоговую панель.
Немодальные диалоговые панели не блокируют работу остальных окон приложения. Поэтому, открыв такую панель, можно продолжать работать с приложением - использовать меню, открывать другие дочерние окна и диалоговые панели.
И модальные и немодальные диалоговые панели обслуживаются одним (общим) классом CDialog, наследованным от базового класса CWnd.
Для создания и отображения необходимо произвести следующие действия. В первую очередь необходимо добавить в файл ресурсов приложения шаблон новой диалоговой панели и при помощи редактора ресурсов изменить его для конкретных целей.
Следующим этапом является создание класса для управления диалоговой панелью. Этот класс наследуется непосредственно от базового класса CDialog и генерируется средством ClassWizard пакета Microsoft Developer Studio.
Каждая диалоговая панель обычно содержит несколько органов управления. Работая с диалоговой панелью, пользователь взаимодействует с этими органами управления - нажимает кнопки, вводит текст, выбирает элементы списков. В результате генерируются соответствующие сообщения, которые должны быть обработаны классом диалоговой панели.
Так как класс диалоговой панели обрабатывает сообщения, то содержит таблицу сообщений и соответствующие методы-обработчики сообщений.
Чтобы создать модальную диалоговую панель, сначала необходимо создать объект определенного в приложении класса диалоговой панели, а затем вызвать метод DoModal, определенный в классе CDialog.
Процедура создания немодальной диалоговой панели несколько другая. Для этого используется метод Create класса CDialog. Процесс создания немодальных диалоговых панелей будет рассматриваться позже. Сейчас остановимся на создании модального диалога.