
- •А.Ю. Быков
- •Быков Александр Юрьевич
- •Подхода
- •Оглавление
- •Введение
- •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
Графические объекты
Для задания «пера» используется класс 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();
Добавление обработчиков сообщений и событий в однодокументном приложении
Осуществляется автоматически. Чтобы добавить обработчик сообщения, во вкладке классы выделяем требуемый класс, нажимаем правую клавишу мыши, выбираем элемент меню Properties (Свойства) и далее открываем вкладку Messages (Сообщения), выбираем тип сообщения и добавляем функцию обработчик.
Добавить обработчик события, например, «Выбор элемента меню»:
В ресурсах выделяем элемент меню, нажимаем правую клавишу мыши, выбираем в меню элемент Add Event Handler, появляется окно для задания параметров функции обработчика события, в котором задаем параметры и добавляем функцию обработчик.
Вывод графики и перерисовка
Вывод графики желательно выполнять внутри класса «Представление» (внутри функций обработчиков этого класса).
Необходимо использовать классы контекстов устройств: CClientDC, CWindowDC.
Для перерисовки добавить код в метод
void CMyProectView::OnDraw(CDC* pDC)
класса представления после комментария
// TODO: add draw code for native data here
7.3. Задачи и порядок выполнения работы
Условие задачи:
Разработать приложение с меню, в котором содержится несколько элементов (минимум 2). Название элементов соответствуют геометрическим фигурам (например, «круг», «квадрат», …). При выборе элемента меню в окне рисуется соответствующая геометрическая фигура, граница пунктирная синего цвета, закраска красными вертикальными линиями. Обеспечить перерисовку выведенных фигур, например, при сворачивании-разворачивании окна. Обеспечить ввод строки текста с клавиатуры и рисование помощью «мыши» графического примитива в соответствии с вариантом задания, обеспечить перерисовку введенных элементов. Графический примитив – отрезок, начальная точка – точка положения курсора мыши в момент нажатия левой клавиши, рисование происходит при перемещении мыши с нажатой левой клавишей, конечная точка- положение курсора в момент отпускания клавиши. Для рисования отрезков использовать сплошное красное «перо». Возможный внешний вид окна приложения представлен на рисунке 6.
Рисунок 6 – Внешний окна приложения