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

Invalidate();

}

}

- Вывести строку :

void Clab3_2View :: OnDraw (CDC* pDC)

{

Clab3_2Doc* pDoc = GetDocument();

ASSERT_VALID (pDoc);

if(!pDoc)

return;

pDC -> TextOut(0, 0, pDoc->StringData);

}

Скомпилировать, запустить и протестировать приложение.

4.2.4. Управление файловой обработкой

lab4_1 «Файловая обработка объектов

классов MFC»

Цель работы - чтение и запись с диска стандартных объектов MFC; работа команд меню File.

Для создания приложения необходимо выполнить следующие операции:

- добавление элементов-данных класса документа, которые будут записываться и читаться с диска;

- инициализация этих элементов-данных в функции OnNewDocument() класса документа и в конструкторе документа;

- ввод данных с клавиатуры, если это необходимо, например, в функции OnChar() для ввода символов строки;

- организация вывода документа (функция OnDraw());

- включение в класс вида функций редактирования документа;

- модернизация функции Serialize() т.е. включение операторов, обеспечивающих сохранение (Save) и загрузку (Open) данных, которые представляют собой содержание документа.

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

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

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

Добавление элемента - данного класса документа

Строка будет хранится в элементе Str класса CString.

//lab4_1Doc.h интерфейс класса Clab4_1Doc

class Clab4_1Doc: public CDocument

{//

// Атрибуты

public:

CString Str;

}

Инициализация элемента - данного в конструкторе класса

и в OnNewDocument() при открытии новых документов

Clab4_1Doc::Clab4_1Doc()

{

Str = “”;

}

BOOL Clab4_1Doc::OnNewDocument()

{

if (!CDocument::OnNewDocument())

return FALSE;

Str = “”; //инициализация при вызове команды File->New

UpdateAllViews(NULL); // обновление всех видов программы

return TRUE;

}

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

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

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

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

{

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

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

pDoc->Str.AppendChar(nChar);//добавление символа к строке Str

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

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

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

void Clab4_1View::OnDraw (CDC* pDC)

{

Clab4_1Doc* pDoc=GetDocument ();

ASSERT_VALID (pDoc);

if(!pDoc)

return;

pDC->TextOut(0, 0, pDoc->Str);

}

Сообщение приложению об изменении данных

Пользователь может выйти из программы, не сохранив данные, программа должна предложить сохранить данные:

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

{//...

Invalidate();

pDoc->SetModifiedFlag(); //устан. флага изменения документа

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

}

Модификация функции Serialize()

void Clab4_1Doc::Serialize(CArchive& ar)

{

if (ar.IsStoring())//проверка: true, если запись и false, если чтение

{//Добавить код для сохранения т.е. записи на диск

ar<<Str;

}

else

{// Добавить код для загрузки т.е. чтения с диска

ar>>Str;

}

}

Скомпилировать, запустить и протестировать приложение.

lab4_2 «Файловая обработка объектов

классов пользователя»

Цель работы - чтение и запись с диска не стандартных объектов MFC, объектов классов пользователя.

Пусть имеется собственный класс CData. Выполнить файловую обработку.

// файл CData.h

class CData

{

private:

CString data;

public:

CData(){data=CString(“”);}