Обробка файлів засобами MFC. Серіалізація нестандартних об’єктів. Створення та редагування ресурсів меню

Страницы работы

Содержание работы

1.  Обробка файлів засобами MFC:

Файл – це об’єкт класу CFile.

Створення об’єкту і вибір режиму його роботи двома способами:

1-й спосіб:

CFile   ім’я_об’єкта;

Ім’я_об’єкта.Open(“імя файла”, режими_ роботи);

2-й спосіб:

CFile ім’я_об’єкта(“ім’я файла”, режими_ роботи);

Режими роботи файлів

•  CFile::modeCreate- створення файла

•  CFile::modeRead- тільки для читання

•  CFile::modeWrite-тільки для запису

•  CFile::modeReadWrite-читати і писати

•  CFile::modeNoTrancate-не стирати зміст уже існуючого файлу з таким же іменем

•  CFile::modeText- використовується класами, які похідні від CFile.

•  CFile::Binary- бінарний режим.

•  CFile f1;

•  f1.Open(“file1.dan”,CFile::modeCreate| CFile::modeRead);

•  Закриття файлів:

•  f1.Close();

Методи для читання або занесення

•  Read(), Write()

•  Seek(кількість_байт, відкіля_рахувати)

•  SeekToBegin(), SeekToEnd().

•  Приклади:

•  f1.Seek(80, CFile::begin);

•  F2.SeekToBegin();

•  GetLength() - повертає довжину файлу в байтах

•  SetLength(ULL  довжина) - установлює  задану довжину файла

•  GetPosition() -повертає поточну позицію курсора

•  GetFilePath() - повертає значення типу CString – ім’я диску та шлях до файла

•  GetFileName() - повертає ім’я файла.

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

•  Створити файл для читання і запису в нього. В текстове вікно занести рядок символів. При натисканні на кнопку цей рядок повинен записатися в файл а відтіля – у вікно списку. Також занести у вікно списку ім’я файлу, шлях до нього, довжину, та поточну  позицію курсору в ньому.

void Crab_fileDlg::OnBnClickedButton1()

{CString s;

CFile f1("f1.txt",CFile::modeCreate|CFile::modeReadWrite);

                   m_edit1.GetWindowTextA(s);

                   f1.SeekToBegin();

                   f1.Write(s,80);

                   f1.SeekToBegin();

                   f1.Read(from_file,80);

                   m_list1.AddString(from_file);

                   long n=f1.GetLength();

                   s.Format("dlina=%li",n);

                   m_list1.AddString(s);

                   m_list1.AddString(f1.GetFileName( ));

                                           s=f1.GetFilePath();

                   m_list1.AddString(s);

}

void Crab_with_fileDlg::OnBnClickedButton1()

{           CString s;

                   CFile f1("file1.txt",CFile::modeCreate|CFile::modeReadWrite);

                   m_edit1.GetWindowTextA(s);

                   f1.SeekToBegin();

                   f1.Write(s,80);

                   f1.SeekToBegin();

                   f1.Read(read_from_file,80);

                   m_list1.AddString(read_from_file);

                   s=f1.GetFilePath();

                   m_list1.AddString(s);

                   s=f1.GetFileName();

                   m_list1.AddString(s);

                   int dlina=f1.GetLength();

                   f1.SetLength(160ULL);

                   s.Format("dlina=%i",dlina);

                   m_list1.AddString(s);

                   int position=f1.GetPosition();

                   s.Format("позиція курсора=%i",position);

                   m_list1.AddString(s);

}

2.  Серіалізація нестандартних  об’єктів

Сериализация – процесс записи на диск или чтения из него

1) Создаем приложение KR .

2) Добавим в него класс Friend. Для этого в меню Project выбрать Add Class. В открывшемся окне выбрать категорию MFC  и шаблон MFC Class.

3) Включить  в класс CFriend  элемент данных m_man и методы.

 void vvod(CString  ch) {

 m_man+=ch;

}

 void vivod (CDC*pDC) {

 pDC->TextOutA(0,10, m_man);

}

void clear() {

 m_man=””;

}

4) Включить в класс CKRDoc  элемент данных public: CFriend  about_ friend. 

5) Теперь создадим обработчик OnChar() нажатия клавиши.

                   Поскольку требуется ввести имя мужчины, в функции OnChar() нужно вызвать метод vvod() класса CFriend.

void CKRView::OnChar(UINT nChar,UINT nRepCnt,UINT nFlags)

{

                   CKRDoc*pDoc=GetDocument();

                   ASSERT_VALID(pDoc);

                   if(!pDoc)

                                           return;

                   pDoc->about_ friend.vvod(CString((char)nChar));

Invalidate();

                   pDoc->SetModifiedFlag();//сохранять новые данные или нет

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

}

                   Для вывода на экран выделим класс CKRView  и в нем OnDraw() Добавим в него pDoc->about_ friend.vivod(pDC);

При создании нового документа нужно очистить экран.

BOOL CAnnDoc::OnNewDocument()

{  ………

about_ friend.clear();

UpdateAllViews(NULL);// информирует что документ был модифицирован

…………

                   }

                   Чтобы обеспечить сериализацию объектов класса СFriend нужно в класс СFriend добавить метод Serialize.

Похожие материалы

Информация о работе