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

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

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

}

Для вывода строки str на экран используем OnDraw()

void CserstandartView::OnDraw(CDC* pDC)

{

                   CserstandartDoc* pDoc = GetDocument();

                   ASSERT_VALID(pDoc);

                   if (!pDoc)

                                           return;

                   pDC->TextOutA(0,20,pDoc->str);// вывода на экран строки символов str

}

 Заполним функцию Serialize().(CserstandartDoc метод  Serialize() )

void CserstandartDoc::Serialize(CArchive& ar)

{

                   if (ar.IsStoring()) {

                                           ar<<str;//Вывод str в файл на диск

                                           }

                   Else {

                                           ar>>str;//чтение str из файла

                   }

}

Сделаем очистку экрана при создании нового документа

 BOOL CserstandartDoc::OnNewDocument()

{

                   if (!CDocument::OnNewDocument())

                                           return FALSE;

                   stroka="";// обнуление строки 

UpdateAllViews(NULL);// информирует все виды, связанные с документом, что этот документ был изменен

                   return TRUE;

}

11.  Ініціалізація, введення/виведення записів при роботі Start Page. Create:Project.
Name-rabfile1, Application Type->Dialog based

Resource View -> Dialog->IDD_RABFILE1_DIALOG В диалоговом окне из Toolbox  разместим управляющие элементы: текстовое окно (ab| Edit Control), окно списка (List Box ) и две кнопки («Занесення в файл» и «Виведення із файлу»).

В класс Crabfile1Dlg добавим элементы данных private CListBox m_list1, private  CEdit m_edit1 а также char OutString[4][80] (строки, заносимые в файл) и char InString[80] (считывание из файла).

Инициализацию выполним в методе OnInitDialog() класса Crabfile1Dlg. BOOL Crabfile1Dlg::OnInitDialog()

{

                   CDialog::OnInitDialog();

                   strcpy_s(OutString[0],"Тихо було за столом.");

                   strcpy_s(OutString[1],"Гості намагалися проковтнути все");

                   strcpy_s(OutString[2],"Інколи чути було якесь булькотіння.");

                   strcpy_s(OutString[3],"У вікна заглядали знервовані коти.");

                   return TRUE; 

}

                   Чтобы выводимые из файла записи размещались в той же последовательности,сортировку нужно отключить(выделяем окно списка->контекстное меню->properties->Sort->вместо true установить false.

Cоздадим обработчик для кнопки «Занесення в файл(выделим кнопку->контекстное меню ->Add Event Handler: в Message type -> BN_CLICKED, в Class List- Crabfile1Dlg). В файле Crabfile1Dlg.cpp появится заготовка для обработчика После её заполнения получим

void Crabfile1Dlg::OnBnClickedButton1()

{

CFile to_file("f1.dat",CFile::modeCreate|CFile::modeWrite);// создается объект to_file

for(int i=0;i<4;i++)

{

                   to_file.Seek(i*80,CFile::begin);

                   to_file.Write(OutString[i],80);// запись строки

}

m_edit1.SetWindowTextA("Занесення відбулося");

                   }

Cоздадим обработчик для кнопки «Виведення із файлу

void Crabfile1Dlg::OnBnClickedButton2()

{

                   CFile from_file("f1.dat",CFile::modeRead);// Создается объект from_file, файл f1.dat переводится в режим только для чтения

                   for(int i=0;i<4;i++)

                   {

                                           from_file.Seek(i*80,CFile::begin);

                                           from_file.Read(InString,80);// чтение из файла

                                           m_list1.AddString(InString);//занесение в окно списка

                   }

                   }