Шаг 77 - О диалоговых окнах

В понятии графического интерфейса GDI есть понятие диалогового окна (dialog box). Если дать простое определение, то это окно, которое не может изменять свои размеры и у которого нет меню. Каждое приложение может иметь огромное количество диалоговых окон или ни одного. Но всё же большинство приложений содержат хотя бы одно диалоговое окно About . Для работы с диалоговыми окнами в MFC нужно -

Ресурс диалогового окна.
Класс окна.

77_1.gif (6972 b)

Ресурс диалогового окна используется для вывода окна на экран самого окна и элементов управления, которые находиться на нем. Класс диалогового окна необходим для программной реализации управления окном и его элементами. Ресурсы диалогового окна создаются редактором ресурсов. Класс окна создает ClassWizard на основе ресурсов диалогового окна. Обычно все эти классы это дети от класса CDialog. Каждый элемент управления обычно имеет переменную в классе диалогового окна. При генерации приложения AppWizard'ом у Вас автоматически генерируется окно о программе.

77_2.gif (4317 b)

IDD_ABOUTBOX это идентификатор диалоговго окна. Он описан в файле resoure.h.

.....
// Microsoft Visual C++ generated include file.
// Used by EE.RC
//

#define IDD_ABOUTBOX 100
#define IDR_MAINFRAME 128
#define IDR_EETYPE 129
.....

В файле реализации класса приложения описан класс для этого окна и сразу за ним реализация.

class CAboutDlg : public CDialog
{
public:
CAboutDlg();
......
};

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

// App command to run the dialog
void CEeApp::OnAppAbout()
{
CAboutDlg aboutDlg;
aboutDlg.DoModal();
}

Создается диалоговое окно в ресурсах. Нажимаете правую кнопку мыши. Выбираете Insert и Dialog. Для создания класса надо на диалоговом окне нажать правую кнопку мыши и выбрать пункт меню ClassWizard. В ответ вам предложат создать новый класс или выбрать существующий. Для подробнойстей смотрите "Шаг 69 - Диалоговое окно для поиска в CEditView".

77_3.gif (2634 b)

Создавая новый класс у Вас спросят имя. Задаете имя и нажимаете OK. В результате создастся класс. Его можно увидеть в ClassView. Создастся два файла заголовочный H и CPP.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 05.01.2000 (обновлено 26.07.2001)