WEB开发网
开发学院软件开发VC Visual C++中对象的序列化与文件I/O研究 阅读

Visual C++中对象的序列化与文件I/O研究

 2008-11-13 19:32:36 来源:WEB开发网   
核心提示: // CPosition类声明部分:class CPosition : public CObject{DECLARE_SERIAL(CPosition)CPosition();int m_nCount;CPoint m_ptPosition[100];void Serialize(CArc

// CPosition类声明部分:
class CPosition : public CObject
{
 DECLARE_SERIAL(CPosition)
 CPosition();
 int m_nCount;
 CPoint m_ptPosition[100];
 void Serialize(CArchive& ar);
 CPoint GetValue(int index);
 void SetValue(int index, CPoint point);
 virtual ~CPosition();
};
……
// CPosition类实现部分:
IMPLEMENT_SERIAL(CPosition, CObject, 0)
CPosition::CPosition()
{
 // 对类成员进行初始化
 m_nCount = 0;
 for (int i = 0; i < 100; i++)
  m_ptPosition[i] = CPoint (0, 0);
}
CPosition::~CPosition()
{
}
void CPosition::SetValue(int index, CPoint point)
{
 // 设置指定点的坐标值
 m_ptPosition[index] = point;
}
CPoint CPosition::GetValue(int index)
{
 // 获取指定点的坐标值
 return m_ptPosition[index];
}
void CPosition::Serialize(CArchive &ar)
{
 CObject::Serialize(ar);
 if (ar.IsStoring())
 {
  // 存储持久性对象到档案
  ar << m_nCount;
  for (int i = 0; i < m_nCount; i++)
  ar << m_ptPosition[i];
 }
 else
 {
  // 从档案装载持久性对象
  ar >> m_nCount;
  for (int i = 0; i < m_nCount; i++)
   ar >> m_ptPosition[i];
 }
}

在创建了自定义持久类CPosition后,可以通过该类对鼠标点击过的点的坐标进行管理,由于序列化的工作已由类本身完成,因此只需在文档类的Serialize()函数中对CPosition的Serialize()成员函数进行调用即可:

上一页  1 2 3 4 5 6 7  下一页

Tags:Visual 对象 序列化

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接