Beginning to 编程

VC++ 方面编程文章

 

MFC 容器类对象的序列化问题

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


 

posted on 2006-05-15 22:14 Beginning to 编程 阅读(1373) 评论(1)  编辑 收藏 引用 所属分类: 关键代码

评论

# re: MFC 容器类对象的序列化问题 2007-08-11 22:14 knhunter

用STL吧  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

统计

常用链接

留言簿(4)

随笔分类

随笔档案

文章档案

相册

BlogDev

搜索

最新评论

阅读排行榜

评论排行榜