- •Создание немодальных диалоговые окон
- •Подведение итогов
- •Глава 7. Диалоговые окна с вкладками и стандартные диалоги
- •Классы диалоговых окон с вкладками (окон свойств)
- •Задание 1. Создание проекта и ресурсов шаблонов диалоговых окон
- •Задание 2. Создание классов диалоговых окон и добавление переменных-членов
- •Задание 3. Изменение ресурса меню, создание обработчиков сообщений
- •Задание 4. Инициализация переменных, связанных с элементами управления
- •Стандартные диалоговые окна
- •Список классов стандартных диалоговых окон
- •Диалоговые окна File Open и Save File As
- •Диалоговые окна Find и Replace
- •Диалоговое окно Page Setup
- •Диалоговые окна Print и Print Setup
- •Информационные диалоговые окна
- •Задание 5. Отображение стандартных диалоговых окон
Задание 3. Изменение ресурса меню, создание обработчиков сообщений
Для отображения диалоговых окон необходимо изменение меню и создание обработчиков сообщений.
Модифицируйте меню программы. Вызовите окно Resource View. Откройте окно редактора меню, щелкнув дважды на идентификаторе ресурса IDR_MAINFRAME в узле Menu.
У далите меню File и Edit и добавьте меню Text с командами Format… и Exit. В окне Properties в поле Caption задайте значение &Text. В поле Caption команды Format задайте значение &Format...\tCtrl+F, в поле ID идентификатора команды мастер предложил значение ID_TEXT_FORMAT134. После команды меню Format вставьте разделитель, определив в окне свойств в поле Separator значение True. Для команды Exit задайте надпись E&xit, в поле ID выберите значение ID_APP_EXIT.
Рис. 7.9. Меню программы TabDemo
Определите горячие клавиши для команды меню Format. Для этого в окне Resource View откройте таблицу горячих клавиш двойным щелчком на идентификаторе ресурса IDR_MAINFRAME в узле ACCESELERATOR. В последней строке таблицы в поле ID выберите идентификатор команды ID_TEXT_FORMAT. В поле Modifier уже записан модификатор Ctrl, в поле Key введите символ F.
Постройте программу и протестируйте ее. Вы получите окно с модифицированным меню, в котором команда Format… заблокирована (рис. 7.10). Это вызвано отсутствием обработчиков командных сообщений.
Рис. 7.10. Главное окно программы TabDemo с модифицированным меню
Добавьте обработчик командного сообщения, вызванного выбором команды отображения диалогового окна. Откройте окно свойств Properties класса документа CTabDemoDoc. Для получения списка идентификаторов команд нажмите кнопку Events. Разверните список сообщений для идентификатора ID_TEXT_FORMAT. Выберите сообщение типа COMMAND и для него выполните команду <Add> OnTextFormat. Объявление функции OnTextFormat() класса CTabDemoDoc добавляется в заголовочный файл TabDemoDoc.h класса документа
public: afx_msg void OnTextFormat();
В файл реализации TabDemoDoc.cpp класса документа добавится шаблон функции. В карту сообщений добавится макрос:
ON_COMMAND(ID_TEXT_FORMAT, OnTextFormat)
В добавленную функцию введите код, обеспечивающий отображение диалогового окна. Добавленній код выделен полужирным шрифтом. Добавленные операторы реализуют создание объекта класса CPropertySheet и экземпляры классов CStyle, CJustify и СPitch, порождаемых от класса CPropertyPage. Каждый из этих объектов связан с одним из разработанных шаблонов диалогового окна и управляет определенной вкладкой. Используя функцию CPropertySheet::AddPage(), объекты вкладок добавляються в список объекта CPropertySheet. Вызов функции CPropertySheet::DoModal() обеспечивает отображение диалогового окна с вкладками.
void CTabDemoDoc::OnTextFormat() { // TODO: Add your command handler code here CPropertySheet PropertySheet ("Format"); CStyle StylePage; CJustify JustifyPage; CPitch PitchPage; // add pages to dialog box object: PropertySheet.AddPage (&StylePage); PropertySheet.AddPage (&JustifyPage); PropertySheet.AddPage (&PitchPage); PropertySheet.DoModal (); }
8. Добавьте следующие директивы препроцессора в файл TabDemoDoc.cpp для подключения интерфейса классов CStyle, CJustify и СPitch к классу документа.
// TabDemoDoc.cpp : implementation of the CTabDemoDoc class #include "stdafx.h" #include "TabDemo.h" #include "TabDemoDoc.h" #include "style.h" #include "pitch.h" #include "justify.h" //другие определения класса
9. После построения и запуска программы вы получите возможность вызвать окно свойств с вкладками