Пиши Дома Нужные Работы

Обратная связь

Форма отчета по лабораторной работе

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

Вопросы для самоконтроля

1. Понятие потока и потоковой многозадачности.

2. Создание потока.

3. Потоковая функция и ее параметр.

4. Синхронизация потоков.

5. Синхронизация процессов.

6. Стандартный класс для задания потока в языке Си++.

 

Лабораторная работа № 7. Изучение библиотеки классов MFC

Цель и задачи работы, требования к результатам ее выполнения

Цель работы состоит в овладении навыками разработки графического интерфейса пользователя с использованием классов библиотеки MFC (Microsoft Foundation Classes). Для достижения цели необходимо выполнить следующие задачи:

- изучить необходимые учебные материалы, посвященные библиотеке классов MFC [6];

- разработать программу на языке Си++ для решения заданного варианта задания;

- отладить программы;

- представить скриншот окна с результатами работы программы;

- подготовить отчет по лабораторной работе.

Краткая характеристика объекта изучения

Обзор упрощенной иерархии классов библиотеки MFC

Библиотека классов MFC (Microsoft Foundation Classes) первоначальное название Application Framework eXtensions (AFX) используется для программирования графического интерфейса пользователя и решения других задач вместо API- функций Windows.

Для использования библиотеки подключается заголовочный файл afxwin.h.

Упрощенная иерархия некоторых классов библиотеки:

CObject

CWinThread // Архитектура приложения

CWinApp // Класс приложение

CDocTemplate // Классы шаблонов

CSingleDocTemplate

CMultiDocTemplate



CDocument // Класс документа

CWnd // Поддержка окон

CFrameWnd // Масштабируемые окна

CMDIFrameWnd

CMDIChildWnd

CDialog // Диалоговые окна

CColorDialog // Диалоговое окно для выбора цвета

CFileDialog // Диалоговое окно для выбора файла

CView // Области просмотра

CControlBar // Панели элементов управления

CStatusBar

CDialogBar

• // Элементы управления

CAnimateCtrl

CButton // Кнопка

CComboBox // Комбинированный список

CEdit // Поле редактора

CListBox // Список

CScrollBar // Полоса прокрутки

CSliderCtrl // Регулятор

CStatic

CException // Особые ситуации

CFile // Работа с файлами

CDC // Поддержка графики

CClientDC

CWindowDC

CPaintDC

CGdiObject // Графические объекты

CBitmap

CBrush

CFont

CPen

CRgn

CPalette

CMenu // Меню

CDatabase // Поддержка ODBC

CDaoDatabase // Поддержка DAO

CArray // Массивы

CList // Списки

Классы не порождаемые от CObject:

CArchive, CRuntimeClass, CPoint, CRect, CString, CTime ,…

Состав простейшего приложения в MFC

Простейшее приложение, создающее окно, состоит как минимум из двух классов:

• класс окна, заголовок имеет вид:

class CMainWin: public CFrameWnd

• класс приложения, заголовок имеет вид:

class CApp: public CWinApp

Обработка сообщений в MFC

Для обработки сообщений необходимо выполнить 3 действия:

- включить в класс макрос

DECLARE_MESSAGE_MAP() // Макрос-

//объявляет очередь сообщений для класса

- включить макрокоманду в очередь сообщений:

BEGIN_MESSAGE_MAP(CMainWin, CFrameWnd)

// Начало очереди сообщений для класса

ON_WM_CHAR() // Ввод символа

ON_WM_LBUTTONDOWN() // Нажатие левой кнопки мыши

ON_WM_LBUTTONUP() // Отпуск левой

// кнопки мыши

ON_WM_MOUSEMOVE() // Перемещение мыши

ON_COMMAND(ID_M1, OnCircle) // Обработка

// элемента меню

ON_WM_PAINT() // Перерисовка

END_MESSAGE_MAP() // Закрыть очередь

// сообщений

• включить в класс функцию-обработчик сообщения, например:

afx_msg void OnChar(UINT Ch, UINT Count, UINT Flags); // Описание в классе

void CMainWin::OnChar(UINT Ch, UINT Count, UINT Flags) {…}

// Определение за пределами класса

Некоторые функции обработчики

Ввод символа:

afx_msg void OnChar(UINT Ch, // Код символа

UINT Count, // Число введенных символов

UINT Flags); // Флаг несущий доп. информацию

// например о нажатие клавиш Ctrl, Shift,..

Нажатие левой кнопки мыши:

afx_msg void OnLButtonDown(UINT Flags,

// Флаг, несущий доп. информацию

CPoint P); // Координаты курсора мыши

Перемещение мыши:

afx_msg void OnMouseMove(UINT Flags, CPoint P);

Выбор элемента меню:

afx_msg void OnCircle();

Перерисовка:

afx_msg void OnPaint();

Вывод графики в MFC

Для рисования в окне используются классы контекстов устройств, производные от класса СDC. Некоторые конструкторы классов контекстов устройств:

CPaintDC(CWnd* pWnd) // Используется при перерисовке

CWindowDC(CWnd* pWnd) // Поверхность всего окна

CСlientDC(CWnd* pWnd) // Клиентская область окна

Заголовки некоторых методов класса CDC:

COLORREF SetPixel(int x, int y, COLORREF crColor);

COLORREF SetPixel(POINT point, COLORREF crColor);

CPoint MoveTo(int x, int y);

CPoint MoveTo(POINT point);

BOOL LineTo(int x, int y);

BOOL LineTo(POINT point);

BOOL Ellipse(int x1, int y1, int x2, int y2);

BOOL Ellipse(LPCRECT lpRect);

BOOL Polygon(LPPOINT lpPoints, int nCount);

BOOL Rectangle(int x1, int y1, int x2, int y2);

BOOL Rectangle(LPCRECT lpRect);

BOOL TextOut(int x, int y, LPCTSTR lpszString, int nCount);

BOOL TextOut(int x, int y, const CString& str);

COLORREF SetTextColor(COLORREF crColor);

COLORREF SetBkColor(COLORREF crColor);

Методы для загрузки объектов в контекст устройства:

virtual CGdiObject* SelectStockObject(int nIndex);

// Загрузить стандартный объект

CPen* SelectObject(CPen* pPen);

CBrush* SelectObject(CBrush* pBrush);

CFont* SelectObject(CFont* pFont);

CBitmap* SelectObject(CBitmap* pBitmap);

int SelectObject(CRgn* pRgn);

Графические объекты

Для задания «пера» используется класс CPen, конструкторы и некоторые методы класса CPen:

CPen();

CPen(int nPenStyle, int nWidth, COLORREF crColor);

BOOL CreatePen(int nPenStyle, int nWidth, COLORREF crColor);

BOOL CreateStockObject(int nIndex);

Для задания «кисти» используется класс CBrush. Конструкторы и некоторые методы класса CBrush:

CBrush();

CBrush(COLORREF crColor);

CBrush(int nIndex, COLORREF crColor);

CBrush(CBitmap* pBitmap);

BOOL CreateSolidBrush(COLORREF crColor);

BOOL CreateHatchBrush(int nIndex, COLORREF crColor);

BOOL CreateStockObject(int nIndex);

В библиотеке классов MFC можно создавать стандартные типы проектов в соответствии с шаблонами, например, можно создать однодокументное приложение (Single document). Классы однодокументного приложения:

class CMyProectApp : public CWinApp // класс-приложение

class CMainFrame : public CFrameWnd // класс главного окна

class CMyProectDoc : public CDocument // класс - документ

class CMyProectView : public CView //класс - представление

Некоторые полезные методы:

Получить документ для представления:

CDocument* CView::GetDocument();

В главном окне есть методы:

CDocument* CFrameWnd::GetActiveDocument();

CView* CFrameWnd::GetActiveView();

В классе приложения есть поле - указатель на главное окно:

CWnd* m_pMainWnd;

Указатель на объект- приложение можно получить с помощью глобальной функции библиотеки MFC:

CWinApp * AfxGetApp();






ТОП 5 статей:
Экономическая сущность инвестиций - Экономическая сущность инвестиций – долгосрочные вложения экономических ресурсов сроком более 1 года для получения прибыли путем...
Тема: Федеральный закон от 26.07.2006 N 135-ФЗ - На основании изучения ФЗ № 135, дайте максимально короткое определение следующих понятий с указанием статей и пунктов закона...
Сущность, функции и виды управления в телекоммуникациях - Цели достигаются с помощью различных принципов, функций и методов социально-экономического менеджмента...
Схема построения базисных индексов - Индекс (лат. INDEX – указатель, показатель) - относительная величина, показывающая, во сколько раз уровень изучаемого явления...
Тема 11. Международное космическое право - Правовой режим космического пространства и небесных тел. Принципы деятельности государств по исследованию...



©2015- 2017 pdnr.ru Все права принадлежат авторам размещенных материалов.