Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВМИиП - Лабораторный практикум на Visual C++ 20...doc
Скачиваний:
2
Добавлен:
13.08.2019
Размер:
650.75 Кб
Скачать

Void AddText(uint text) {data.AppendChar(text);} //доб. В конец стр.

void DrawText(CDC* pDC) {pDC->TextOut(0,0,data);} //вывод

void ClearText() {data=””;} //очистка строки

};

Для создания приложения lab4_2 выполнить этапы.

Создание проекта

Создать проект lab4_2 (SDI-приложение).

Добавление нового класса в проект

- Добавить в проект новый файл CData.h.

Для этого выполнить команду Project->Add New Item и в появившемся окне в Categories выбрать Visual C++ Code, а в Templates - Header File (.h). Затем ввести имя файла заголовков CData.h и щелкнуть на кнопке Add. Откроется окно для ввода текста файла. Ввести текст файла CData.h. Команда Project->Add New Item аналогична команде File->New->File, однако она автоматически добавляет новый файл в проект.

- Включить в файл заголовков документа lab4_2Doc.h файл заголовков CData.h, а также создать объект класса CData с именем DataObject:

//lab4_2Doc.h

#include “CData.h”

//Атрибуты

public:

CData DataObject;

Ввод данных с клавиатуры

- Связать сообщение WM_CHAR с функцией-обработчиком OnChar(). Для этого открыть окно Class View, щелкнув на вкладке Class View или на команде View->Class View. Щелкнуть правой кнопкой на имени класса Clab4_2View и выбрать коианду Properties. В окне свойств Properties щелкнуть на кнопке Messages и в появившемся списке сообщений выбрать WM_CHAR, а в комбинированном списке справа щелкнуть на команде <Add> OnChar. Появляется скелет функции OnChar().

- Сохранить вводимый символ в документе. Вводимый символ, находящийся в параметре nChar функции OnChar(), добавляется к строке data.

void Clab4_2View::OnChar(UNIT nChar, UNIT nRepCnt, UNIT nFlags)

{

Clab4_2Doc* pDoc=GetDocument ();//указатель на объект докум.

ASSERT_VALID (pDoc);//проверка указателя

pDoc->DataObject.AddText(nChar);//доб. символа к строке data

Invalidate(); //при вводе символа вид объявл. Не действительным

CView::OnChar (nChar, nRepCnt, nFlags);

}

Вывод текущего состояния документа

void Clab4_2View::OnDraw (CDC* pDC)

{

Clab4_2Doc* pDoc=GetDocument ();

ASSERT_VALID (pDoc);

if(!pDoc)

return;

pDoc->DataObject.DrawText(pDC);

}

Модификация собственного класса

class CData: public CObject//CData - производный от CObject

{

private:

CString data;

DECLARE_SERIAL(CData);//вкл. макроса

public:

void ClearText(){data="";}

Void Serialize(cArchive& archive);//прототип переопред. Функции

};

Создание новой версии Serialize() собственного класса

- Добавить в проект новый файл CData.cpp.

Для этого выполнить команду Project->Add New Item и в появившемся окне в Categories выбрать Visual C++ Code, а в Templates - C++ File (.cpp). Затем ввести имя файла заголовков CData.cpp и щелкнуть на кнопке Add. Откроется окно для ввода текста файла. Ввести текст файла CData.cpp.

// CData.cpp

#include "stdafx.h"

#include "lab4_2Doc.h"

Void cData::Serialize(cArchive& archive)

{

CObject::Serialize(archive);//вызов функции базового класса

If (archive.IsStoring())

{

archive<<data;

}

else

{

archive>>data;

}

}

-Добавить макрос IMPLEMENT_SERAL

// CData.cpp

#include "stdafx.h"

#include "lab4_2Doc.h"

void CData::Serialize(CArchive& archive)

{//

}