- 1
- 2
Простая программа, использующая MDI интерфейс
В этом разделе рассматривается программа использующая MDI ( интерфейс многих документов )
Мы создадим программу, в которой документом является графическое изображение - круг. В ToolBar будет создана иконка, при нажатие на которою будет вызываться диалоговое окно, позволяющее изменять координаты круга. Местоположение круга можно будет согранять в файл с расширением CIR.
Создание проекта программы
1. Создайте новый проект( у меня MDI ), использующая MDI интерфейс с поддержкой MFC. Все шесть шагов в MFC AppWizard оставте без изменения.
2. Если вы сделали всё правильно, то создадутся пять классов : CMDIApp, CMainFrame, CChildFrame, CMDIDoc и CMDIView. В классе документов CMDIDoc вы пишите код для поддержки данных программы, а в классе представления CMDIView - код, отвечающий за то, что вы видите на экране. Вы будете писать код в функциях-элементах только этих двух классов.
3. Объявляем элементы данных класса документа. Их будет два : координаты круга по X и по Y. Для этого открываем файл CMDIDoc.h и изменяем объявление класса CMDIDoc следующим образом:
class CMDIDoc : public CDocument { protected:
// create from serialization only CMDIDoc(); DECLARE_DYNCREATE(CMDIDoc) // Attributes public: int m_X; // координаты круга по x int m_Y;
// координаты круга по y // Operations ... ...
4. Объявляем элементы данных класса представления. Их будет тоже два : координаты круга по X и по Y. Для этого открываем файл CMDIView.h и изменяем объявление класса CMDIView следующим образом:
class CMDIView : public CView { protected:
// create from serialization only CMDIView(); DECLARE_DYNCREATE(CMDIView) // Attributes public: CMDIDoc* GetDocument(); int m_X;
// координаты круга по x int m_Y;
// координаты круга по y // Operations ... ...
Как вы видите, имена переменных могут совпадать( обычно так и делается ).
5. Инициализируем элементы данных класса документа. Для этого откройте файл MDIDoc.cpp, найдите в нём функцию OnNewDocument() и напишите в ней следующий код:
BOOL CMDIDoc::OnNewDocument() { if (!CDocument::OnNewDocument()) return FALSE; m_X = 100; // начальное положение по X=100 m_Y = 100;
// начальное положение по Y=100
// TODO: add reinitialization code here // (SDI documents will reuse this document) return TRUE; }
6. Инициализируем элементы данных класса представления. Для этого нужно создать функцию-элемент OnInitialUpdate() класса представления:
Выберите ClassWizard в меню View. На странице Message Maps выберите следующие события:
Class neme : CMDIView Object ID : CMDIView Message : OnInitialUpdate
и нажмите на кнопку Add Function
Напишите следующий код в функцию OnInitialUpdate():
void CMDIView::OnInitialUpdate() { CView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class CMDIDoc* pDoc = GetDocument();
// получить указатель на документ
// обновить элементы данных представления
// соответствующими значениями документа. m_X = pDoc->m_X; m_Y = pDoc->m_Y; pDoc->SetTitle("ANDY");
// всем документам даётся название ANDY }
7. Теперь напишем код для вывода круга на экран.
Функция OnDraw() класса представления автоматически выполняется всякий раз, когда нужно вывести окно документа.
Напишите следующий код в функции OnDraw() :
void CMDIView::OnDraw(CDC* pDC) { CMDIDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc);
// TODO: add draw code for native data here pDC->Ellipse(m_X - 20, m_Y - 20, m_X + 20, m_Y + 20);
// рисуем круг диаметром 20}
8. Напишем код для сохранения и считывания данных из файла.
Откройте файл MDIDoc.cpp, найдите в нём функцию Serialize() и измените её:
void CMDIDoc::Serialize(CArchive& ar) { if (ar.IsStoring()) {
// TODO: add storing code here( это выполняется,
если выбрать SAVE ) arm_Y;
// считываем значение из выбранного файла
- 1
- 2
Похожие работы
Тема: Простая программа, использующая MDI интерфейс |
Предмет/Тип: Информатика, ВТ, телекоммуникации (Статья) |
Тема: Шизофрения, простая форма |
Предмет/Тип: Медицина, физкультура, здравоохранение (Реферат) |
Тема: Простая замкнутая ломаная кривая |
Предмет/Тип: Информатика, ВТ, телекоммуникации (Курсовая работа (т)) |
Тема: Простая замкнутая ломаная кривая |
Предмет/Тип: Другое (Курсовая работа (т)) |
Тема: Простая логика платоновского "Парменида" |
Предмет/Тип: Философия (Реферат) |
Интересная статья: Быстрое написание курсовой работы