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(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()成员函数进行调用即可:
- ››Visual Basic 2008 数学函数
- ››Visual Studio2005中Smart Device的问题
- ››Visual Studio 中根据数据库字段动态生成控件
- ››Visual Studio 11全新黑色主题
- ››Visual Studio 2011 Beta新特性(一):安装VS201...
- ››Visual Studio自定义调试窗体两个小技巧
- ››Visual Studio 2005 Team Edition for Database P...
- ››Visual C#两分钟搭建BHO IE钩子
- ››Visual C++优化对大型数据集合的并发访问
- ››VISUAL C++中的OCX控件的使用方法
- ››Visual C++实现视频图像处理技术
- ››Visual C++制作一个Sniffer实例
更多精彩
赞助商链接