MFC 自定义类的序列化实现 实例 Shape类
来源:互联网 发布:六安市数控编程人才网 编辑:程序博客网 时间:2024/06/05 01:11
.H:
class CShape : public CObject
{
public:
CShape(void);
CShape(CShape& other);
~CShape(void);
// 是否边框
bool m_bBorder;
// 是否填充
bool m_bFill;
// 边框颜色
COLORREF m_borderColor;
// 边框粗细
int m_nBorderWidth;
// 填充颜色
COLORREF m_fillColor;
// 中心点
CRect m_rect;
virtual CString getType(void);
protected:
CString m_strType;
public:
void Serialize(CArchive &ar);//序列化函数
DECLARE_SERIAL(CShape)//声明序列化类
class CShape : public CObject
{
public:
CShape(void);
CShape(CShape& other);
~CShape(void);
// 是否边框
bool m_bBorder;
// 是否填充
bool m_bFill;
// 边框颜色
COLORREF m_borderColor;
// 边框粗细
int m_nBorderWidth;
// 填充颜色
COLORREF m_fillColor;
// 中心点
CRect m_rect;
virtual CString getType(void);
protected:
CString m_strType;
public:
void Serialize(CArchive &ar);//序列化函数
DECLARE_SERIAL(CShape)//声明序列化类
};
/////////////////////////////////////////////////////////////////////////////
.cpp:
IMPLEMENT_SERIAL(CShape,CObject,1)//实现序列化类
.cpp:
IMPLEMENT_SERIAL(CShape,CObject,1)//实现序列化类
CShape::CShape(void)
: m_bBorder(false)
, m_bFill(false)
, m_nBorderWidth(0)
, m_rect()
, m_strType(_T("Shape"))
{
}
: m_bBorder(false)
, m_bFill(false)
, m_nBorderWidth(0)
, m_rect()
, m_strType(_T("Shape"))
{
}
CShape::CShape(CShape& other)
{
this->m_strType = other.m_strType;
this->m_bBorder = other.m_bBorder;
this->m_bFill = other.m_bFill;
this->m_borderColor = other.m_borderColor;
this->m_nBorderWidth = other.m_nBorderWidth;
this->m_fillColor = other.m_fillColor;
this->m_rect = other.m_rect;
}
{
this->m_strType = other.m_strType;
this->m_bBorder = other.m_bBorder;
this->m_bFill = other.m_bFill;
this->m_borderColor = other.m_borderColor;
this->m_nBorderWidth = other.m_nBorderWidth;
this->m_fillColor = other.m_fillColor;
this->m_rect = other.m_rect;
}
CShape::~CShape(void)
{
}
{
}
CString CShape::getType(void)
{
return m_strType;
}
void CShape::Serialize(CArchive &ar)//序列化函数的实现
{
if(ar.IsStoring())
//存入
ar<<m_strType<<m_bBorder<<m_bFill<<m_nBorderWidth<<m_borderColor<<m_fillColor<<m_rect;
else
//输出
ar>>m_strType>>m_bBorder>>m_bFill>>m_nBorderWidth>>m_borderColor>>m_fillColor>>m_rect;
{
if(ar.IsStoring())
//存入
ar<<m_strType<<m_bBorder<<m_bFill<<m_nBorderWidth<<m_borderColor<<m_fillColor<<m_rect;
else
//输出
ar>>m_strType>>m_bBorder>>m_bFill>>m_nBorderWidth>>m_borderColor>>m_fillColor>>m_rect;
}
///////////////////////////////////////////////////////////////////////////////////
使用CTypedPtrArray存储,注意数据尽量保存在DOC里面:
CTypedPtrArray<CObArray,CShape *> m_ShapeArray;
在CDoc的Serialize 里面:
if (ar.IsStoring())
{
m_ShapeArray.Serialize(ar);
}
else
{
m_ShapeArray.Serialize(ar);
}
///////////////////////////////////////
数据修改后记得进行标记:
SetModifiedFlag();
///////////////////////////////////////////////////////////////////////////////////
使用CTypedPtrArray存储,注意数据尽量保存在DOC里面:
CTypedPtrArray<CObArray,CShape *> m_ShapeArray;
在CDoc的Serialize 里面:
if (ar.IsStoring())
{
m_ShapeArray.Serialize(ar);
}
else
{
m_ShapeArray.Serialize(ar);
}
///////////////////////////////////////
数据修改后记得进行标记:
SetModifiedFlag();
- MFC 自定义类的序列化实现 实例 Shape类
- MFC + 自定义类的序列化与反序列化
- MFC的串行序列化的实现
- MFC序列化技术的实现
- MFC中的类序列化
- 自定义序列化 ISerializable 的实现
- Hadoop自定义可序列化的类
- Unity自定义类的序列化
- 使用目前hadoop内置的序列化类(不使用自定义序列化类),实现流量统计的功能
- MFC自定义按钮的实现
- MFC中对象序列化技术的实现
- MFC中对象序列化技术的实现
- 实现MFC六大机制的动态创建和序列化
- C#实例类序列化
- 自定义类可序列化
- 自定义类和类的实例化
- 序列化类的读取实例化的时间点
- Android实现Parcelable对象序列化的实例
- MFC 目录选取,指定类型文件查找复制
- 数组子序列的个数
- android中杀死进程的方法
- ios7中,A界面状态栏下面有个UIScrollView,push到B界面后,回退回来UIScrollView下移和可上下拉动的解决
- Java中static、final用法小结
- MFC 自定义类的序列化实现 实例 Shape类
- jQuery插件开发2
- MFC 关于BMP 24bit 和 32bit的操作
- 排序算法的稳定性分析
- Qt5 学习笔记 一:安装Qt 5.1
- CodeForce 204 Div2. C Jeff And Rounding
- Bugzilla windows安装指南
- Monthly Expense(二分法)
- MFC Ribbon 获取 ComBox,Slider,Edit等方法