設計一個程序實現如何保存一系列的SPen(如下定義)對象到文件,或者稱為序列化SPen collection
SPenCollection::Load和 Save函數實現打開畫筆文件(文件的內容是一系列SPen對象)
// for example
?SPenCollection pc;
?pc.Load("C:\\1.pen");
我不知道如何序列化容器類對象,請大蝦指教。
// 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 : 實現文件
//
#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 成員函數
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;
?}
}
///////////////////////////////////////
// 關鍵是要實現如何保存一系列的SPen對象
// load 和 save函數實現打開畫筆文件(文件的內容是一系列SPen對象)
// for example
/** SPenCollection pc;
???pc.Load("C:\\1.pen");
?**/
#pragma once
// SPenCollection 命令目標
#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 不知道用得對不對,請大蝦指教
?CArray<SPen*,SPen*> pens;
};
?