設(shè)計(jì)一個(gè)程序?qū)崿F(xiàn)如何保存一系列的SPen(如下定義)對(duì)象到文件,或者稱為序列化SPen collection
SPenCollection::Load和 Save函數(shù)實(shí)現(xiàn)打開畫筆文件(文件的內(nèi)容是一系列SPen對(duì)象)
// for example
?SPenCollection pc;
?pc.Load("C:\\1.pen");
我不知道如何序列化容器類對(duì)象,請(qǐng)大蝦指教。
// SPen object
class SPen : public CObject
{
?DECLARE_SERIAL(SPen)
public:
?SPen();
?virtual ~SPen();
public:
?int lineStyle;
?int lineWidth;
?COLORREF lineColor;
public:
?virtual void Serialize(CArchive& ar);
};
// SPen.cpp : 實(shí)現(xiàn)文件
//
#include "stdafx.h"
#include "ArchiveTest.h"
#include "SPen.h"
// SPen
IMPLEMENT_SERIAL(SPen,CObject,1)
SPen::SPen()
{
?lineStyle = PS_SOLID;
?lineWidth = 2;
?lineColor = RGB(255,0,0);
}
SPen::~SPen()
{
}
// SPen 成員函數(shù)
void SPen::Serialize(CArchive& ar)
{
?if (ar.IsStoring())
?{?// storing code
??ar<<lineStyle;
??ar<<lineWidth;
??ar<<lineColor;
?}
?else
?{?// loading code
??ar>>lineStyle;
??ar>>lineWidth;
??ar>>lineColor;
?}
}
///////////////////////////////////////
// 關(guān)鍵是要實(shí)現(xiàn)如何保存一系列的SPen對(duì)象
// load 和 save函數(shù)實(shí)現(xiàn)打開畫筆文件(文件的內(nèi)容是一系列SPen對(duì)象)
// for example
/** SPenCollection pc;
???pc.Load("C:\\1.pen");
?**/
#pragma once
// SPenCollection 命令目標(biāo)
#include "SPen.h"
#include <afxtempl.h>
class SPenCollection : public CObject
{
?DECLARE_SERIAL(SPenCollection)
public:
?SPenCollection();
?virtual ~SPenCollection();
?void AddPen(SPen* pen);
?void Load(CString strFileName);
?void Save(CString strFileName);
// CArray 不知道用得對(duì)不對(duì),請(qǐng)大蝦指教
?CArray<SPen*,SPen*> pens;
};
?