лабки / еще какието лабки разных вариантов / ЛР_21
.docxВаріант 7
Лабораторна робота 20
СЕРІАЛІЗАЦІЯ НЕСТАНДАРТНИХ ОБ’ЄКТІВ ПІД ЧАС РОБОТИ З ФАЙЛАМИ
Постановка завдання
Створити однодокументну Windows-програму на C++ISO|ANSI з
використанням бібліотеки MFC. Передбачити створення користувачем
нестандартного, тобто власного класу. У ньому передбачити елемент даних
типу CString. У свою чергу, внести об'єкт цього класу як елемент даних у клас документа. Забезпечити процес серіалізації документа. Тобто в конкретному випадку потрібно забезпечити читання рядка символів, запис її на диск і подальше читання з диска.
Код та блок-схеми:
void vvod(CString ch)
{ m_poroda+=ch;
} void vivod
(CDC*pDC)
{ pDC->TextOutA(0,10,
m_poroda);
}
void clear()
{ m_poroda=””;
}
void CMyView::OnChar(UINT nChar, UINT nRepCnt,
{
UINT nFlags)
CMyDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
if(!pDoc)
return;
pDoc->about_dog.vvod(CString((char)nChar));
Invalidate();
// Не забувати!
pDoc->SetModifiedFlag();
}
CView::OnChar(nChar, nRepCnt, nFlags);
void CMyView::OnDraw(CDC*pDC /*pDC*/)
{
CMyDoc* pDoc =
GetDocument();
ASSERT_VALID(pDoc); if (!pDoc)
return;
pDoc->about_dog.vivod(pDC);
// TODO: добавьте здесь код отрисовки для собственных данных }
void CDog::Serialize(CArchive& ar)
{
CObject::Serialize(ar);
if(ar.IsStoring())
ar<<m_poroda; else
ar>>m_poroda;
}
void CMyDoc::Serialize(Carchive& ar)
{
about_dog.Serialize(ar);
/*if (ar.IsStoring())
{
// TODO: добавьте код сохранения
}
else
{
// TODO: добавьте код загрузки
} */
}
Скріншот программи:
Висновки
Створено однодокументну Windows-програму на C++ISO|ANSI з
використанням бібліотеки MFC. Передбачено створення користувачем
нестандартного, тобто власного класу. У ньому передбачено елемент даних
типу CString. У свою чергу, занесено об'єкт цього класу як елемент даних у клас документа.