Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
193-224.doc
Скачиваний:
1
Добавлен:
11.11.2019
Размер:
378.88 Кб
Скачать

Задание 3. Изменение ресурса меню, создание обработчиков сообщений

Для отображения диалоговых окон необходимо изменение меню и создание обработчиков сообщений.

  1. Модифицируйте меню программы. Вызовите окно Resource View. Откройте окно редактора меню, щелкнув дважды на идентификаторе ресурса IDR_MAINFRAME в узле Menu.

  2. У далите меню 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.

  3. Рис. 7.9. Меню программы TabDemo

    Сохраните модифицированное меню, выполнив команду FileSave All. Для использования нужных программисту идентификаторов команд меню откройте файл TabDemo.rc в любом текстовом редакторе (например, Notepad), в разделе определении меню замените цифровые значения требуемыми. В нашем случае удалите цифровые символы в идентификаторе и оставьте значение ID_TEXT_FORMAT. Сохраните файл TabDemo.rc и нажмите кнопку Yes в появившемся окне сообщений.
  4. Определите горячие клавиши для команды меню Format. Для этого в окне Resource View откройте таблицу горячих клавиш двойным щелчком на идентификаторе ресурса IDR_MAINFRAME в узле ACCESELERATOR. В последней строке таблицы в поле ID выберите идентификатор команды ID_TEXT_FORMAT. В поле Modifier уже записан модификатор Ctrl, в поле Key введите символ F.

  5. Постройте программу и протестируйте ее. Вы получите окно с модифицированным меню, в котором команда Format… заблокирована (рис. 7.10). Это вызвано отсутствием обработчиков командных сообщений.

Рис. 7.10. Главное окно программы TabDemo с модифицированным меню

  1. Добавьте обработчик командного сообщения, вызванного выбором команды отображения диалогового окна. Откройте окно свойств 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)

  1. В добавленную функцию введите код, обеспечивающий отображение диалогового окна. Добавленній код выделен полужирным шрифтом. Добавленные операторы реализуют создание объекта класса 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. После построения и запуска программы вы получите возможность вызвать окно свойств с вкладками

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]