русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Лабораторная работа № 5. Программирование с использованием библиотеки MFC. Создание пунктов меню


Дата добавления: 2015-07-09; просмотров: 952; Нарушение авторских прав


 

Цель: получить навыки разработки программы под 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

5. Нажимаем «Готово» и запускаем компиляцию программы (F7) и её запуск Ctrl+F5.

6. Программа практически все уже умеет. Поэкспериментируйте с программой.

7. Добавим свои пункты меню. Для этого переходим в окно ресурсов (Resource View)и выбираем следующие элементы: Painter1.rc->Menu. Дважды щелкаем ЛК мыши на элемент IDR_MAINFRAME.



8. В позицию «Прототип текста(Type Here) »введите название пункта меню. Создайте пункты меню «Элементы» и «Цвет».

Рисунок 3

 

9. Создайте обработчики событий меню. Обработчики будут реализованы в классе документа. Выделите нужный пункт меню и нажмите ПК мыши. В контекстном меню выберите пункт «Добавить обработчик событий(Add Event Handler)».

Рисунок 4

10. В появившемся окне выбираем тип сообщения «COMMAND», а в списке классов –класс документа. Нажмите кнопку «Добавить/править». В результате в классе CPainterDoc появится код следующего вида:

11. void CPainterDoc::OnColorRed()

12. {

13. // TODO: добавьте свой код обработчика команд

14. }

Рисунок 5

 

15. Добавим в класс CPainterDoc переменную m_Color типа COLORREF:

16. class CPainterDoc : public CDocument

17. { protected: // создать только из сериализации

18. Cmfc2Doc();

19. DECLARE_DYNCREATE(Cmfc2Doc)

20. // Атрибуты

21. public:

22. // Операции

23. public:

24. // Переопределение

25. public:

26. virtual BOOL OnNewDocument();

27. virtual void Serialize(CArchive& ar);

28. #ifdef SHARED_HANDLERS

29. virtual void InitializeSearchContent();

30. virtual void OnDrawThumbnail(CDC& dc, LPRECT lprcBounds);

31. #endif // SHARED_HANDLERS

32. // Реализация

33. public:

34. virtual ~Cmfc2Doc();

35. #ifdef _DEBUG

36. virtual void AssertValid() const;

37. virtual void Dump(CDumpContext& dc) const;

38. #endif

39. protected:

40. // Созданные функции схемы сообщений

41. protected:

42. DECLARE_MESSAGE_MAP()

43. #ifdef SHARED_HANDLERS

44. // Вспомогательная функция, задающая содержимое поиска для обработчика поиска

45. void SetSearchContent(const CString& value);

46. #endif // SHARED_HANDLERS

47. #ifdef SHARED_HANDLERS

48. private:

49. CString m_strSearchContent;

50. CString m_strThumbnailContent;

51. #endif // SHARED_HANDLERS

52. public:

53. afx_msg void OnColorRed();

54. protected:

55. COLORREF m_Color;

56. public:

57. afx_msg void OnColorBlack();

58. afx_msg void OnColorGreen();

59. afx_msg void OnElementCircle();

60. afx_msg void OnElementRectangle();

61. afx_msg void OnElementCurve();

62. };

 

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

 



<== предыдущая лекция | следующая лекция ==>
Теоретическая часть | Лабораторная работа № 6. Программирование с использованием библиотеки MFC. Панель инструментов


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.846 сек.