Отчёт о лабораторной работе №2 «Разработка приложений с использованием библиотеки mfc» Преподаватель: Романенко С. А




Скачать 418.01 Kb.
НазваниеОтчёт о лабораторной работе №2 «Разработка приложений с использованием библиотеки mfc» Преподаватель: Романенко С. А
страница1/5
Дата публикации07.04.2013
Размер418.01 Kb.
ТипОтчет
odtdocs.ru > Военное дело > Отчет
  1   2   3   4   5
Министерство Образования Российской Федерации

Санкт-Петербургский Государственный Электротехнический Университет «ЛЭТИ»

Кафедра МО ЭВМ


Отчёт о лабораторной работе №2

«Разработка приложений с использованием библиотеки MFC»

Преподаватель: Романенко С.А.

Выполнил: студент гр. 3351

Ерёменок А.В.

Санкт-Петербург

2007

  1. Цель работы


      Освоить приемы создания приложений типа Model-View-Controller при помощи библиотеки MFC.
  2. Выполнение

    1. Найти проекты MFC Tutorial. Откомпилировать и выполнить пример Sketcher01


      1. Просмотреть структуру классов проекта и выделить элементы архитектуры Model-View-Controller, реализованные в MFC.

        Sketcher01 имеет следующие классы:


        Среди них CSketcherApp — представляет контроллер, CSketcherDoc — модель и CSketcherView — вид.

      2. ^ Рассмотреть особенности обработки событий в MFC (OnElement... и OnUpdateElement...).

        События, происходящие в приложении в результате действий пользователя, обрабатываются следующим образом. Элементы диалогов и меню имеют свои идентификаторы. Связать их события с обработчиками можно при помощи диалога «class wizard»:


        В выбранном классе для выбранного элемента можно задать обработку возможных событий. В результате этого в заголовочном файле выбранного класса будет сгенерирован подобный код описания сообщений:

          //{{AFX_MSG(CSketcherDoc)

afx_msg void OnColorBlack();

afx_msg void OnColorRed();

afx_msg void OnElementLine();

afx_msg void OnElementRectangle();

afx_msg void OnUpdateColorBlack(CCmdUI* pCmdUI);

afx_msg void OnUpdateColorRed(CCmdUI* pCmdUI);

afx_msg void OnUpdateElementLine(CCmdUI* pCmdUI);

afx_msg void OnUpdateElementRectangle(CCmdUI* pCmdUI);

//}}AFX_MSG

              В файле реализации будет сгенерирован аналогичный код с описанием сообщений, элементов интерфейса и функций обработки:

          BEGIN_MESSAGE_MAP(CSketcherDoc, CDocument)

//{{AFX_MSG_MAP(CSketcherDoc)

ON_COMMAND(ID_COLOR_BLACK, OnColorBlack)

ON_COMMAND(ID_COLOR_RED, OnColorRed)

ON_COMMAND(ID_ELEMENT_LINE, OnElementLine)

ON_COMMAND(ID_ELEMENT_RECTANGLE, OnElementRectangle)

ON_UPDATE_COMMAND_UI(ID_COLOR_BLACK, OnUpdateColorBlack)

ON_UPDATE_COMMAND_UI(ID_COLOR_RED, OnUpdateColorRed)

ON_UPDATE_COMMAND_UI(ID_ELEMENT_LINE, OnUpdateElementLine)

ON_UPDATE_COMMAND_UI(ID_ELEMENT_RECTANGLE, OnUpdateElementRectangle)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

А также сами функции обработки, например:

void CSketcherDoc::OnColorBlack(){...}

      1. ^ Добавить в приложение поддержку других событий (в соответствии с индивидуальным заданием).

        Индивидуальное задание по этому пункту отсутствует.
    1. ^

      Откомпилировать и выполнить пример Sketcher02


      1. Выполнить программу по шагам, установить контрольные точки на операциях с мышью и в местах обработки других событий, проинспектировать все полные объекты конечных производных классов.

        Выполнено.

      2. ^ Освоить работу с Profiler в MFC проектах.

        Освоено.

      3. Найти код отрисовки фигур на экране.

        За отисовку фигур отвечают следующие функции, описанные в файле CElements.cpp:

        // Draw a CLine object

void CLine::Draw(CDC* pDC)

{

// Create a pen for this object and

// initialize it to the object color and line width of 1 pixel

CPen aPen;

if(!aPen.CreatePen(PS_SOLID, m_Pen, m_Color))

{

// Pen creation failed. Abort the program.

AfxMessageBox("Pen creation failed drawing a line", MB_OK);

AfxAbort();

}
CPen* pOldPen = pDC->SelectObject(&aPen); // Select the pen
// Now draw the line

pDC->MoveTo(m_StartPoint);

pDC->LineTo(m_EndPoint);
pDC->SelectObject(pOldPen); // Restore the old pen

}
// Draw a CRectangle object

void CRectangle::Draw(CDC* pDC)

{

// Create a pen for this object and

// initialize it to the object color and line width of 1 pixel

CPen aPen;

if(!aPen.CreatePen(PS_SOLID, m_Pen, m_Color))

{ // Pen creation failed

AfxMessageBox("Pen creation failed drawing a rectangle", MB_OK);

AfxAbort();

}
// Select the pen

CPen* pOldPen = pDC->SelectObject(&aPen);

// Select the brush

CBrush* pOldBrush = (CBrush*)pDC->SelectStockObject(NULL_BRUSH);
// Now draw the rectangle

pDC->Rectangle(m_EnclosingRect);
pDC->SelectObject(pOldBrush); // Restore the old brush

pDC->SelectObject(pOldPen); // Restore the old pen

}

а также другие, связанные с ними.

      1. В конструкторе CSketcherApp::InitInstance() принудительно установить размеры и положение окна (в центре экрана). Изучить и изменить атрибуты (курсор, цвет фона и т.д.).

    В методе BOOL CSketcherApp::InitInstance():

  • Окно центрируется командой pMainFrame->CenterWindow()

  • Размеры и положение окна задаются командой pMainFrame->SetWindowPos(...)

  • Кроме некоторых основных свойств, для задания которых существуют методы, начинающиеся с set..., прочие свойства задаются командой pMainFrame->SetProperty(...)

      1. Модифицировать классы графических объектов из л/р 1 так чтобы они обладали возможностью отображать объекты в окне Windows.

        Классы модифицированы следующим образом:

      • класс Shape сделан наследником CElement. Иерархия классов выглядит так:




      • для конкретных классов переопределен метод Draw

      • введены вспомогательные методы в Shape

        //рисует идентификатор фигуры

void drawID(CDC* pDC, bool isIdVisible = true) const;
//изменяет размер фигуры

virtual void resize(CPoint Start, CPoint End);
  1   2   3   4   5

Добавить документ в свой блог или на сайт

Похожие:

Отчёт о лабораторной работе №3 «Применение протоколов связи приложений...
На Visual Basic for Application написать макрос, который с помощью dde создает новую группу на рабочем столе и в ней новый программный...

Отчёт о лабораторной работе №4 «Разработка экспертной системы с использованием...
Провести создание нечеткой экспертной системы для определения размера чаевых. Провести проверку работы созданной системы

Отчёт о лабораторной работе №3 «Анализ операционных графовых моделей...
Для задачи обработки данных, рассматривавшейся в лабораторных работах 1-2, построить управляющий граф программы с нагруженными дугами,...

Отчет по лабораторной работе «проектирование печатного узла рэа»...
Целью лабораторной работы является разработка конструкторской документации узла рэа по заданной принципиальной схеме

Отчет по лабораторной работе «проектирование печатного узла рэа»...
Целью лабораторной работы является разработка конструкторской документации узла рэа по заданной принципиальной схеме

Отчёт о лабораторной работе №2 «Изучение понятия сопроцессов и виртуальных...
Написать программу, устанавливающую виртуальные связи между тремя сопроцессами на одном процессоре

Отчёт по лабораторной работе на тему «3d графика»
В данной лабораторной работе использовалась программа Autodesk 3ds Max 2009 и Adobe Photoshop cs4

Отчет по лабораторной работе №9 по курсу «компьютерная графика» Студент...
Вариант 28**: Забить пробный гвоздь в тестовую доску (прямоугольную в поперечном сечении)

Отчёт о лабораторной работе №2 «Анализ огм последовательных программ...
Для полученного графа построить соответствующую ему поглощающую цепь Маркова (пцм), определить ее фундаментальную матрицу(ФМ) и вектор...

Отчёт о лабораторной работе №2 «Анализ огм последовательных программ...
Для полученного графа построить соответствующую ему поглощающую цепь Маркова (пцм), определить ее фундаментальную матрицу(ФМ) и вектор...

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
odtdocs.ru
Главная страница