
- •090900.62 Информационная безопасность
- •Введение
- •Теоретическая часть
- •Постановка задачи
- •1.3 Порядок выполнения работы
- •1.4 Контрольные вопросы
- •2 Лабораторная работа № 2. Массивы
- •2.1 Теоретическая часть
- •2.2 Постановка задачи
- •2.3 Порядок выполнения работы
- •2.4 Контрольные вопросы
- •3 Лабораторная работа № 3. Указатели
- •3.1 Теоретическая часть
- •3.2 Постановка задачи
- •3.3 Контрольные вопросы
- •4 Лабораторная работа № 4. Классы
- •4.1 Теоретическая часть
- •4.2 Задание
- •5 Лабораторная работа № 5. Программирование с использованием библиотеки mfc. Создание пунктов меню
- •6 Лабораторная работа № 6. Программирование с использованием библиотеки mfc. Панель инструментов
- •7 Лабораторная работа № 7. Программирование с использованием библиотеки mfc. Основы рисования
- •Список литературы
4.2 Задание
Создать класс «Сотрудник». Класс содержит следующие параметры:
- ФИО (указатель типа char);
- количество отработанных дней;
- сумма оплаты одного дня;
- коэффициент расчета заработной платы.
К параметрам нет прямого доступа: только через методы.
Класс содержит следующие методы:
- конструктор (выполняет выделение памяти размером 50 байт под ФИО);
- деструктор (освобождает память, выделенную под ФИО);
- методы для установки и получения данных о количестве дне, сумме оплаты, коэффициенте, ФИО;
- метод, возвращающий значение з/п (S=кол-во дней∙сумма оплаты∙коэффициент);
- метод сравнения ФИО (возвращает истину или ложь если переданная строка совпадает с именем объекта).
2. В основной программе объявить массив объектов типа сотрудник.
Программа позволяет вводить данные сотрудников в цикле, осуществить поиск по ФИО, рассчитать общие затраты организации на заработную плату.
5 Лабораторная работа № 5. Программирование с использованием библиотеки mfc. Создание пунктов меню
Цель: получить навыки разработки программы под Windows.
5.1 Теоретическая часть
При создании приложения с использованием библиотеки Microsoft Foundation Classes (MFC) предполагает соблюдение определенной структуры программы. Структура программы MFC включает две основные сущности: документ и представление.
Документ- это имя, присвоенное коллекции данных приложения. Документ определяется как объект класса MFC CDocument, в который добавляются переменные –члены для хранения данных, и функции, для обработки данных.
Представление относится к определенному объекту документа. Представление- это объект, предлагающий механизм отображения данных, которые хранятся в документе. Он определяет, как данные отображаются в окне и как пользователь может взаимодействовать с ними. Программист определяет собственный класс представления, который является наследником класса CView MFC.
5.2 Задание
Создать SDI приложение. Научиться создавать пункты меню:
«Элементы»:
-«Круг»;
- «прямоугольник»;
- «кривая».
«Цвет»:
-красный;
-синий;
-зеленый;
-черный.
5.3 Порядок выполнения работы
1. Создайте новый проект на основе шаблона «Приложение MFC».
2. Выставьте следующие параметры проекта, как показано на рисунке 5.1.
Рисунок 1
3. Проект не будет поддерживать составных документов.
4. Остальные параметры оставим без изменений до пункта «Созданные классы». Далее устанавливаем, что представление приложения является наследником класса CEditView.
Рисунок 2
Нажимаем «Готово» и запускаем компиляцию программы (F7) и её запуск Ctrl+F5.
Программа практически все уже умеет. Поэкспериментируйте с программой.
Добавим свои пункты меню. Для этого переходим в окно ресурсов (Resource View)и выбираем следующие элементы: Painter1.rc->Menu. Дважды щелкаем ЛК мыши на элемент IDR_MAINFRAME.
В позицию «Прототип текста(Type Here) »введите название пункта меню. Создайте пункты меню «Элементы» и «Цвет».
Рисунок 3
Создайте обработчики событий меню. Обработчики будут реализованы в классе документа. Выделите нужный пункт меню и нажмите ПК мыши. В контекстном меню выберите пункт «Добавить обработчик событий(Add Event Handler)».
Рисунок 4
В появившемся окне выбираем тип сообщения «COMMAND», а в списке классов –класс документа. Нажмите кнопку «Добавить/править». В результате в классе CPainterDoc появится код следующего вида:
void CPainterDoc::OnColorRed()
{
// TODO: добавьте свой код обработчика команд
}
Рисунок 5
Добавим в класс CPainterDoc переменную m_Color типа COLORREF:
class CPainterDoc : public CDocument
{ protected: // создать только из сериализации
Cmfc2Doc();
DECLARE_DYNCREATE(Cmfc2Doc)
// Атрибуты
public:
// Операции
public:
// Переопределение
public:
virtual BOOL OnNewDocument();
virtual void Serialize(CArchive& ar);
#ifdef SHARED_HANDLERS
virtual void InitializeSearchContent();
virtual void OnDrawThumbnail(CDC& dc, LPRECT lprcBounds);
#endif // SHARED_HANDLERS
// Реализация
public:
virtual ~Cmfc2Doc();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
// Созданные функции схемы сообщений
protected:
DECLARE_MESSAGE_MAP()
#ifdef SHARED_HANDLERS
// Вспомогательная функция, задающая содержимое поиска для обработчика поиска
void SetSearchContent(const CString& value);
#endif // SHARED_HANDLERS
#ifdef SHARED_HANDLERS
private:
CString m_strSearchContent;
CString m_strThumbnailContent;
#endif // SHARED_HANDLERS
public:
afx_msg void OnColorRed();
protected:
COLORREF m_Color;
public:
afx_msg void OnColorBlack();
afx_msg void OnColorGreen();
afx_msg void OnElementCircle();
afx_msg void OnElementRectangle();
afx_msg void OnElementCurve();
};
16. Щелкнете правой кнопкой на папке «Файлы заголовка» на вкладке «Обозреватель решений» и выберите в контекстном меню «Добавить-Добавить новый элемент». Введите имя файла PainterConstants, который будет хранить константы проекта. В файле введите следующий код:
#include "windows.h"
enum ElementType{LINE, RECTANGLE, CURVE};
const COLORREF BLACK=RGB(0,0,0);
const COLORREF RED=RGB(255,0,0);
const COLORREF GREEN=RGB(0,255,0);
const COLORREF BLUE=RGB(0,0,255);
17. Добавьте в файл Painter.h строку #include " PainterConstants.h";
18. Добавьте код инициализации конструктору класса:
CPainterDoc:: CPainterDoc ()
{
m_Element=LINE;
m_Color=BLACK;
}
19. Добавьте код в обработчике событий элементов меню, например:
void CPainterDoc::OnColorRed()
{
m_Color=RED;
}
void CPainterDoc::OnElementCircle()
{
m_Element=CIRCLE;
}
20. Запустите программу и проверьте её работоспособность;
21. Для отметки пунктов меню нужно создать обработчики вида UPDATE_COMMAND_UI. Обработчики сообщений данного типа используются для обновления свойств пункта меню перед их отображением. Рассмотрим пример. Перейдите в «Окно ресурсов» и выбрать пункт меню «Цвет»-«Красный». Нажав ПК мыши вызвать контекстное меню и создать обработчик команды обновления пункта меню (рисунок 6).
Рисунок 6
Далее добавляем следующий код:
void Cmfc2Doc::OnUpdateColorRed(CCmdUI *pCmdUI)
{
pCmdUI->SetCheck(m_Color==RED);
}
Добавленный оператор вызывает функцию SetCheck, которая помечает пункт меню, если её параметр true. В данном случае пункт меню Цвет-Красны будет помечен, если значение переменной m_Color будет равен значению Red.
Подобным образом сделайте обработчики для следующих пунктов меню: синий, черный, зеленый.
Запустите программу на выполнение и проверьте, что галочки устанавливаются правильно. Пример результата работы программы представлен на рисунке 7.
Рисунок 7.
22. Подобным образом сделайте обработчики событий для пункта меню «Элемент». Запустите программу на выполнение и проверьте её работу. Пример результата работы программы представлен на рисунке 8.
Рисунок 8