| ||||||||||||||||
![]() | ||||||||||||||||
| ||||||||||||||||
![]() | ||||||||||||||||
| ||||||||||||||||
![]() |
17. Простая программа, использующая MDI интерфейс
Мы создадим программу, в которой документом является графическое изображение - круг. В ToolBar будет создана иконка, при нажатие на которою будет вызываться диалоговое окно, позволяющее изменять координаты круга. Местоположение круга можно будет согранять в файл с расширением CIR. Создание проекта программы
1. Создайте новый проект( у меня MDI ), использующая MDI интерфейс с поддержкой MFC. Все шесть шагов в MFC AppWizard оставте без изменения. 2. Если вы сделали всё правильно, то создадутся пять классов : CMDIApp, CMainFrame, CChildFrame, CMDIDoc и CMDIView. В классе документов CMDIDoc вы пишите код для поддержки данных программы, а в классе представления CMDIView - код, отвечающий за то, что вы видите на экране. Вы будете писать код в функциях-элементах только этих двух классов. 3. Объявляем элементы данных класса документа. Их будет два : координаты круга по X и по Y . Для этого открываем файл CMDIDoc.h и изменяем объявление класса CMDIDoc следующим образом: 4. Объявляем элементы данных класса представления. Их будет тоже два : координаты круга по X и по Y . Для этого открываем файл CMDIView.h и изменяем объявление класса CMDIView следующим образом: Как вы видите, имена переменных могут совпадать( обычно так и делается ). 5. Инициализируем элементы данных класса документа. Для этого откройте файл MDIDoc.cpp , найдите в нём функцию OnNewDocument() и напишите в ней следующий код: 6. Инициализируем элементы данных класса представления. Для этого нужно создать функцию-элемент OnInitialUpdate() класса представления: Выберите ClassWizard в меню View . На странице Message Maps выберите следующие события: и нажмите на кнопку Add Function Напишите следующий код в функцию OnInitialUpdate(): 7. Теперь напишем код для вывода круга на экран. Функция OnDraw() класса представления автоматически выполняется всякий раз, когда нужно вывести окно документа. Напишите следующий код в функции OnDraw() : 8. Напишем код для сохранения и считывания данных из файла. Откройте файл MDIDoc.cpp , найдите в нём функцию Serialize() и измените её: 9. Часто бывает нужно изменить некоторые параметры программы, такие как заголовок главного окна или тип файла по умолчанию, который выводится в диалоговых панелях SAVE и OPEN . Для этого нужно выбрать закладку ResourceView и открыть пункт String Table . Вы увидите список переменных проекта( три колонки : ID, Value и Caption ).
IDR_MCIRCLTYPE - тип файла по умолчанию, вы увидите 6 подстрок разделёнными знаком \n . Третья и четвёртая подстроки определяют тип документа по умолчанию. У меня CIR FILES( *.cir ) и .cir соответственно. Вы можете поставить свои значения. 10. Теперь создадим кнопку в панеле инструментов. Для этого нужно выбрать закладку ResourceView и открыть пункт Toolbar . Вы увидите панель инструментов в режиме редактирования. Нажмите на самую правую кнопку( пунктирный квадрат ), ниже нарисуйте кнопку по вашему усмотрению. Теперь дважды нажмете на вашу кнопку и введите ID: ID_MYBUTTON и Prompt: Изменение координат круга\nИзменение координат круга . Ну вот и всё, кнопка готова. Теперь нужно создать функцию, которая будет выполняться при нажатии на вашу кнопку : Выберите пункт меню View далее ClassWizard , выберите закладку Message Maps , Project: MDI, Class name: CMDIView, Object IDs: ID_MYBUTTON, Message: COMMAND и нажмите на кнопку Add Function . В ответ создастся функция void CMDIView::OnMybutton() . 11. Теперь по аналогии с главой 15 создадим собственное диалоговое окно с ID: IDD_MY_DIALOG и классом CMyDialog и разместим в нём четыре Edit Box с переменными типа INT : m_DX - текущая позиция по X, m_DY - текущая позиция по Y, m_DXN - новая позииция по X, m_DYN - новая позииция по Y. Не забудте написать #include "MyDialog.h" в файлах MDIDoc.cpp и MDIView.cpp . 12. Теперь напишем код в функцие OnMybutton() .
13. Ну вот и всё, программа готова. Отсюда можно взять рабочую программу, использующую MDI, в которой используется собственное диалоговое окно. [Назад][Содержание][Вперед] |
|
![]() | ||||||||||||||||
| ||||||||||||||||
![]() | ||||||||||||||||
|