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

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

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

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

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.

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

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

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.