设计一个程序实现如何保存一系列的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;
};