
- •А.Ю. Быков
- •Быков Александр Юрьевич
- •Подхода
- •Оглавление
- •Введение
- •1. Лабораторная работа № 1. Изучение диалоговых окон и элементов управления в Win api
- •1.1. Цель и задачи работы, требования к результатам ее выполнения
- •1.2. Краткая характеристика объекта изучения
- •1.2.1. Классификация диалоговых окон
- •1.2.2. Окна сообщений
- •1.2.3. Создание модального диалогового окна
- •1.2.4. Элементы управления диалогового окна
- •Кнопка, контрольный переключатель, радио кнопка
- •Текстовое поле
- •Примеры
- •Примеры посылки сообщений списку
- •1.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •1.4. Форма отчета по лабораторной работе
- •1.5. Вопросы для самоконтроля
- •2.1. Цель и задачи работы, требования к результатам ее выполнения
- •2.2. Краткая характеристика объекта изучения
- •2.2.1. Понятие класса и объекта
- •2.2.2. Доступность компонент класса
- •2.2.3. Основные элементы класса Компонентные данные и функции класса
- •Конструктор класса
- •Деструктор класса
- •2.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •2.4. Форма отчета по лабораторной работе
- •2.5. Вопросы для самоконтроля
- •3.1. Цель и задачи работы, требования к результатам ее выполнения
- •3.2. Краткая характеристика объекта изучения
- •3.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •3.4. Форма отчета по лабораторной работе
- •4.2.3. Особенности конструкторов при наследовании
- •4.2.4. Особенности деструкторов при наследовании
- •4.2.5. Переопределение функций. Виртуальные функции
- •4.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •4.4. Форма отчета по лабораторной работе
- •5.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •5.4. Форма отчета по лабораторной работе
- •6.2.2. Создание потока с помощью api – функций
- •6.2.3. Синхронизация потоков
- •1. Взаимное исключение.
- •3. Семафор
- •4. Событие
- •6.2.4. Синхронизация процессов
- •6.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •6.4. Форма отчета по лабораторной работе
- •6.5. Вопросы для самоконтроля
- •7. Лабораторная работа № 7. Изучение библиотеки классов mfc
- •7.1. Цель и задачи работы, требования к результатам ее выполнения
- •7.2. Краткая характеристика объекта изучения
- •7.2.1. Обзор упрощенной иерархии классов библиотеки mfc
- •7.2.2. Состав простейшего приложения в mfc
- •7.2.3. Обработка сообщений в mfc
- •Некоторые функции обработчики
- •7.2.4. Вывод графики в mfc
- •Графические объекты
- •Добавление обработчиков сообщений и событий в однодокументном приложении
- •Вывод графики и перерисовка
- •7.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •7.4. Форма отчета по лабораторной работе
- •7.5. Вопросы для самоконтроля
- •8. Лабораторная работа № 8. Изучение разработки приложений для платформы Microsoft .Net с использование библиотеки классов .Net Framework
- •8.1. Цель и задачи работы, требования к результатам ее выполнения
- •8.2. Краткая характеристика объекта изучения
- •8.2.1. Обзор платформы Microsoft .Net
- •8.2.2. Единая среда исполнения
- •8.2.4. Понятие управляемого кода
- •8.2.6. Система общих типов
- •8.2.7. Обзор библиотеки классов .Net Framework
- •8.2.8. Класс Form
- •8.2.9. Обработка событий
- •8.2.10. Основные элементы управления
- •8.4. Форма отчета по лабораторной работе
- •8.5. Вопросы для самоконтроля
- •Заключение
- •Рекомендуемые источники
- •Приложение а. Варианты заданий для выполнения лабораторных работ Варианты заданий для лабораторной работы № 1
- •Варианты заданий для лабораторной работы № 2
- •Варианты заданий для лабораторной работы № 3
- •Варианты заданий для лабораторной работы № 4
- •Варианты заданий для лабораторной работы № 5
- •Варианты заданий для лабораторной работы № 6
- •Часть I
- •Часть II
- •Варианты заданий для лабораторной работы № 7
- •Варианты заданий для лабораторной работы № 8
7.2.2. Состав простейшего приложения в mfc
Простейшее приложение, создающее окно, состоит как минимум из двух классов:
класс окна, заголовок имеет вид:
class CMainWin: public CFrameWnd
класс приложения, заголовок имеет вид:
class CApp: public CWinApp
7.2.3. Обработка сообщений в 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();
7.2.4. Вывод графики в 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);