8
. Visual C++ , .
writer , .
writer
AppWizard (SDI) writer:
1. , . StringData CString, :
//writerDoc.h: CWriterDoc
.
.
.
class CWriterDoc: public CDocument
{
protected: //
CWriterDoc();
DECLARE_DYNCREATE(CWriterDoc)
//
public:
CString StringData;
2. StringData :
CWriterDoc::CWriterDoc()
{
StringData = ;
}
3. ClassWizard WM_CHAR OnChar() StringData:
void CWriterDoc:: OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
CWriterDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pDoc->StringData += nChar;
Invalidate();
CView::OnChar(nChar, nRepCnt, nFlags);
}
4. , OnDraw :
void CWriterView::OnDraw(CDC* pDC)
{
CWriterDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pDC->TextOut(0, 0, pDoc->StringData);
}
, StringData.
, .
StringData
( writerDoc.h) Serialize(), :
void CWriterDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
//
ar << StringData;
}
else
{
//
ar >> StringData;
}
}
StringData. Serialize() ar CArchive, ar cout cin. IsStoring() ar, , , .
|
|
StringData . , , , . , , CDocument - SetModifiedFlag(), :
void CWriterView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
CWriterDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pDoc->StringData += nChar;
Invalidate();
pDoc->SetModifiedFlag();
CView::OnChar(nChar, nRepCnt, nFlags);
}
! .
CData : - data CString, . .
1. AppWizard (SDI) serializer.
2. VisualC++ File -> New, Files, , CData.h.
3. :
class CData: public CObject
{
private:
CString data;
DECLARE_SERIAL(CData);
public:
CData(){data = CString("");}
void AddText(CString text){data += text;}
void DrawText(CDC* pDC){pDC->TextOut(0, 0, data);}
void ClearText(){data = "";}
void Serialize(CArchive& archive);
}
:
- MFC CObject;
- Visual C++ DECLARE_SERIAL, , ;
- Serialize() CObject;
4. CData.cpp, Serialize() Cobject.
5. :
#include stdafx.h
#include serializerDoc.h
void CData::Serialize(CArchive& archive)
{
// Serialize() CObject
CObject::Serialize(archive);
// data CData
if (archive.IsStoring())
{
archive << data;
}
else
{
archive >> data;
}
}
// , //
IMPLEMENT_SERIAL(CData, CObject, 0)
6. (serializerDoc.h) ( CData) CData DataObject:
// serializerDoc.h CSerializerDoc
//
//////////////////////////////////////////////////////////////////////////////////////////////////////////
#include "CData.h"
.
.
.
class CSerializerDoc: public CDocument
{
.
.
.
//
public:
CData DataObject;
.
.
.
}
7. DataObject Serialize() Serialize() ( CSerializerDoc):
|
|
void CSerializerDoc::CSerializerDoc(CArchive& ar)
{
DataObject.Serialize(ar);
}
8. WM_CHAR OnChar() DataObject CData:
void SerializerView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
CSerializerDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// CData, data
pDoc-> DataObject.AddText(CString(nChar));
Invalidate();
CView::OnChar(nChar, nRepCnt, nFlags);
}
9. DataObject CData DrawText(), OnDraw() SerializerView:
void CSerializerView::OnDraw(CDC* pDC)
{
CSerializerDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pDoc-> DataObject.DrawText(pDC);
}