Складання програми табуляції функції х=f(а) при зміні а від amin до аmах з кроком da, страница 2

9)   Забезпечимо очищення при створенні нового документу

  1. BOOL CMy3Doc::OnNewDocument()
  2. {
  3.      if (!CDocument::OnNewDocument())
  4.           return FALSE;
  5.      text_book.clear();
  6.      UpdateAllViews(NULL);
  7.      return TRUE;
  8. }

10)  Запрограмуємо виведення на екран набраного тексту для цього змінемо функцію OnDraw()

  1. void CMy3View::OnDraw(CDC* pDC)
  2. {
  3.      CMy3Doc* pDoc = GetDocument();
  4.      ASSERT_VALID(pDoc);
  5.      if (!pDoc)
  6.           return;
  7.  
  8.      pDoc->text_book.output(pDC);
  9. }
  10.  

Програма готова.

Приклад роботи програми:

У вікні яке з'явиться при запуску програми введемо текст:

Збережемо файл, та відкриємо новий:

Відкриємо збереженний файл:

Завдання №3

Постановка задачі

Запрограмувати малюнок

Еліпс залити зеленим кольором. Занести малюнок на диск, зчитувати с диску, відтворювати його, забезпечити створення нового документу, в результаті чого старий повинен зникти. Тобто забезпечити роботу File/Save, File/Open, OnDraw, File/New.

Опис виконання програми:

1)  Start Page. Create:Project.

2)  Обираємо тип проекту (Project types) MFC, шаблон- MFC Application,
Name- 2.

3)  У вікні Application Type обираємо single document. Прибираємо прапорець Use Unicode libraries та натискаємо на Finish.

Додамо в клас CMy2Doc вказівник на метафайл pMetaFileDC.

4)  В конструктор класу CMy2Doc додамо виділення пам’яті та створення мета файлу, та намалюємо в ньому квадрат та эліпс яке заллємо червоним кольором

  1. CMY2Doc::CMy2Doc()
  2. : pMetaFileDC(NULL)
  3. {
  4.      pMetaFileDC = new CMetaFileDC();
  5.      pMetaFileDC -> Create();
  6.      pMetaFileDC->Rectangle ( 100, 100, 300, 200);
  7.      CBrush brush(RGB(0,255,0));
  8.      pMetaFileDC->SelectObject(&brush);
  9.      pMetaFileDC->Ellipse ( 100, 100, 300, 200);
  10. }

5)  Запрограмуємо оновлення зображення в функції OnDraw() за допомогою метафайлів. Для цього мета файл потрібно закрити, отримати його логічний номер та відтворити мета файл по номеру.

  1. void CMy2View::OnDraw(CDC* pDC)
  2. {
  3.      CMY2Doc* pDoc = GetDocument();
  4.      ASSERT_VALID(pDoc);
  5.      if (!pDoc)
  6.           return;
  7.      HMETAFILE Nomer = pDoc->pMetaFileDC->Close();
  8.      pDC->PlayMetaFile(Nomer);
  9.      CMetaFileDC* metafile = new CMetaFileDC();
  10.      metafile->Create();
  11.      metafile->PlayMetaFile(Nomer);
  12.      DeleteMetaFile(Nomer);
  13.      delete pDoc->pMetaFileDC;
  14.      pDoc->pMetaFileDC = Metafile;
  15. }

6)  В меню File додамо пункти Save_File та Open_File.

7)   Додамо обробник для пункту меню Save_File для збереження зображення

  1. void CMy2View::OnFileSave32771()
  2. {
  3.      CMY2Doc* pDoc = GetDocument();
  4.      ASSERT_VALID(pDoc);
  5.      HMETAFILE Nomer = pDoc->pMetaFileDC->Close();
  6.      CopyMetaFile(Nomer,"file.wmf");
  7.      CMetaFileDC* Metafile = new CMetaFileDC();
  8.      Metafile->Create();
  9.      Metafile->PlayMetaFile(Nomer);
  10.      DeleteMetaFile(Nomer);
  11.      delete pDoc->pMetaFileDC;
  12.      pDoc->pMetaFileDC = Metafile;
  13. }

8)  Додамо обробник для пункту меню Open_File для відкриття збереженого зображення:

  1. void CMy2View::OnFileOpen32772()
  2. {
  3.      CMY2Doc* pDoc = GetDocument();
  4.      ASSERT_VALID(pDoc);
  5.      HMETAFILE Nomer = GetMetaFile("file.wmf");
  6.      CMetaFileDC* Metafile = new CMetaFileDC();
  7.      Metafile->Create();
  8.      Metafile->PlayMetaFile(Nomer);
  9.      DeleteMetaFile(Nomer);
  10.      delete pDoc->pMetaFileDC;
  11.      pDoc->pMetaFileDC = Metafile;
  12.      Invalidate();
  13. }

9)  Додамо обробник для пункту меню New очищення метафайлу:

  1. void CMY2View::OnFileNew()
  2. {
  3.      CMY2Doc* pDoc = GetDocument();
  4.      ASSERT_VALID(pDoc);
  5.      CMetaFileDC* newMetaFile = new CMetaFileDC();
  6.      newMetaFile->Create();
  7.      delete pDoc->pMetaFileDC;
  8.      pDoc->pMetaFileDC = newMetaFile;
  9.      Invalidate();
  10. }

Програма готова.

Приклад роботи програми:

При запуску програми з’являється робоче вікно:

Збережемо зображення, обравши в меню File пункт Save_File. Обравши в меню File пункт New, або відповідну кнопку на панелі інструментів створимо новий документ в результаті чого робоча область буде очищена.

Відкриємо збережений малюнок, обравши в меню File пункт Open_File

Натиснувши кнопку лінія, або обравши відповідний пункт меню, можемо малювати лінії.

Висновок

В результаті виконання ОДЗ були покращені навички роботи з Visual C++ та бібліотекою MFC: створенні однодокументних програм, програм з діалоговими вікнами, графікою та метафайлами отриманими під час навчання.

Список літератури

1.  Тихомиров Ю.  MFC. Самоучитель. – СПб.: BHV – Санкт-Петербург, 2001. – 640 с.

2.  Берн Страуструп. Язык программирования С++ (спец. издание). М.: Диасофт, 2000г.

3.  Бруно Бабэ. Просто и ясно о Borland C++. М.: Бином, 1995.

4.  Проценко В.С., Чаленко П.Й., Ставровський А.Б. Техніка програмування мовою Сі:. Навчальний посібник. – Київ:Либідь, 1993

5.  Теренс Чан Системное программирование на С++ для UNIX. BHV.- Киев, 1999.

6.  И.М.Двоеглазов. Язык программирования С++ (Справочное руководство).- Киев: Евроиндекс ,1993.

7.  Стефан Дьюхарст, Кэти Старк. Программирование на С++. Киев: НИПФ «Диасофт»,1993.

8.  Пол Лукас. С++ под рукой. Киев: НИПФ,”ДиаСофт”,1993.

9.  Деревянко Ф.С. Системное программное обеспечение персональных ЭВМ. Учебное пособие.- Харьков: ХГПУ,1994.

10. А.И. Касаткин, А.Н. Вальвачев. От TURBO C к BORLAND C++.,- Минск: - ВШ, 1992.