Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT | страница 71
Рис. 2.31. Классы проекта MFDialog
Страница ResourceView окна Project Workspace показывает все ресурсы, входящие в проект (рис. 2.32). В приложении MFDialog определен только один ресурс – диалоговая панель, имеющая идентификатор “DIALOGPANEL”.
Рис. 2.32. Ресурсы проекта MFDialog
Постройте проект и запустите полученный выполнимый файл. На экране появится диалоговая панель My Dialog, определенная в файле ресурсов нашего проекта (рис. 2.33). Вначале поле редактирования Line Editor пустое. В нем вы можете ввести любой текст. Если вы нажмете на кнопку Default, тогда все, что вы ввели в поле редактирования Line Editor, пропадает и в нем отображается строка Start Text.
Кроме кнопки Default в диалоговой панели My Dialog находятся еще две кнопки OK и Cancel. Если вы нажмете кнопку OK, тогда диалоговая панель закрывается, а на экране появляется текстовое сообщение, содержащее текст, введенный вами в поле Line Editor. Если нажать кнопку Cancel, то диалоговая панель My Dialog также закроется, но сообщение с введенным вами текстом не появится.
Рис. 2.33. Приложение MFDialog
Рассмотренное нами приложение MFDialog можно создать значительно быстрее, если воспользоваться средствами автоматизированной разработки приложений MFC AppWizard и ClassWizard. Используя эти средства, вы будете избавлены от необходимости вручную набивать в текстовом редакторе код приложения и сможете сконцентрировать свои усилия на реализации обработчиков сообщений от органов управления диалоговой панели.
Теперь приступим к рассмотрению исходного текста приложения, представленного в листинге 1.1.
Сначала мы определяем главный класс приложения CMFDialogApp, наследованный от базового класса CWinApp . Класс CMFDialogApp и его методы используются аналогично приложению MFHello. Отличие заключается в том, что переопределенный метод InitInstance вместо отображения на экране сообщения при помощи функции AfxMessageBox , отображает полноценную модальную диалоговую панель.
>//=====================================================
>// Метод InitInstance класса CMFDialogApp
>//=====================================================
>BOOL CMFDialogApp::InitInstance() {
> // Создаем объект класса CMyDialog
> CMyDialog dlgTest;
> m_pMainWnd = &dlgTest;
> // Отображаем на экране модельную диалоговую панель
> dlgTest.DoModal();
> // Отображаем на экране значение переменной m_Text,
> // входящей в класс CMyDialog
> AfxMessageBox(dlgTest.m_Text);