MFC 序列化总结
来源:互联网 发布:淘宝怎么投诉未生产 编辑:程序博客网 时间:2024/05/29 03:47
问题如下:
需要一个能够自由画图的程序,比如可以自由画直线,圆,椭圆等图形。同时,在画完图形以后,可以保存即序列化。
个人认为难点:如何实现多个类的对象序列化到同一个文件。
思来想去最好的办法就是利用类的多态。
可以实现让直线,圆,椭圆都继承与Geometry类(自定义),利用多太将它们的操作统一。
代码如下:
class CLine : public Geometry
{
private:
POINT m_ptOrigin;
POINT m_point;
public:
DECLARE_SERIAL(CLine)
CLine();
CLine(const POINT pt1,const POINT pt2);
void Serialize(CArchive& ar);
POINT GetOriginalPoint();
POINT GetNextPoint();
bool Equal();
virtual ~CLine();
void Draw(CDC* pdc);
};
CPP文件中代码:
CLine::CLine()
{
}
CLine::~CLine()
{
}
IMPLEMENT_SERIAL(CLine,CObject,1)
void CLine::Serialize(CArchive& ar)
{
CString type="CLine";
//读
if (ar.IsStoring())
{
ar<<m_ptOrigin.x<<m_ptOrigin.y<<m_point.x<<m_point.y;
}
else
{
ar>>m_point.x>>m_point.y>>m_ptOrigin.x>>m_ptOrigin.y;
}
}
void CLine::Draw(CDC* pdc)
{
pdc->MoveTo(m_ptOrigin);
pdc->LineTo(m_point);
}
CLine::CLine(const POINT pt1,const POINT pt2)
{
m_ptOrigin.x=pt1.x;
m_ptOrigin.y=pt1.y;
m_point.x=pt2.x;
m_point.y=pt2.y;
}
bool CLine::Equal()
{
if (m_ptOrigin.x==m_point.x&&m_ptOrigin.y==m_point.y)
{
return true;
}
else
{
return false;
}
}
POINT CLine::GetOriginalPoint()
{
return m_ptOrigin;
}
POINT CLine::GetNextPoint()
{
return m_point;
}
class CRound : public Geometry
{
private:
POINT Center;
int Radius;
public:
void Draw(CDC* pdc);
void Serialize(CArchive &ar);
CRound()
{
Center.x=0;
Center.y=0;
Radius=-1;
}
CRound(POINT center,int rad);
virtual ~CRound();
DECLARE_SERIAL(CRound)
};
CPP文件代码
IMPLEMENT_SERIAL(CRound,CObject,1)
void CRound::Serialize(CArchive& ar)
{
//读
if (ar.IsStoring())
{
ar<<Center.x<<Center.y<<Radius;
}
else
{
ar>>Center.x>>Center.y>>Radius;
}
}
//构造函数
CRound::CRound(POINT cernter,int rad)
{
this->Center=cernter;
Radius=rad;
}
void CRound::Draw(CDC *pdc)
{
//画圆
pdc->Ellipse(Center.x-Radius,Center.y-Radius,Center.x+Radius,Center.y+Radius);
}
。。。。。。。
由子类Serialize重载基类,实现序列化。
- MFC 序列化总结
- MFC序列化(转)(
- [MFC]对象序列化
- MFC文档序列化
- MFC对象序列化
- MFC序列化
- MFC序列化
- MFC之序列化
- MFC序列化
- MFC文档序列化
- MFC序列化Serialize
- MFC中的类序列化
- MFC文档序列化内幕
- MFC文档序列化内幕
- MFC 序列化再理解
- MFC 序列化一点研究
- .net 序列化总结
- 序列化总结
- 使用java(JAX-RS) 搭建 RESTful WebService
- 串口com10以上CreateFile打开成功的方法
- 黑马程序员——sql数据库学习日志
- Mongodb连接方法学习
- 黑马程序员——ADO.NET学习日志
- MFC 序列化总结
- 装饰器模式
- 移动开发之浅析cocos2d-x的中文支持问题
- new 用法详解
- Excel开发中的0x800A03EC异常
- MFC 序列化一点研究
- 标读“链表处理语言(LISt Processor)”
- 印度和中国程序员的区别
- Android 4.0 ICS SystemUI浅析——StatusBar工作流程之时间日期设置