??xml version="1.0" encoding="utf-8" standalone="yes"?>狠狠色丁香久久婷婷综合_中,久久人妻AV中文字幕,日本三级久久网http://m.shnenglu.com/cxiaojia/category/20202.html厚d 博学 求真 臛_ The bright moon and breezezh-cnSat, 02 Mar 2013 12:55:14 GMTSat, 02 Mar 2013 12:55:14 GMT60MFC文档序列化实C存和加蝲 http://m.shnenglu.com/cxiaojia/archive/2013/03/02/198177.htmlC加C加Sat, 02 Mar 2013 10:04:00 GMThttp://m.shnenglu.com/cxiaojia/archive/2013/03/02/198177.htmlhttp://m.shnenglu.com/cxiaojia/comments/198177.htmlhttp://m.shnenglu.com/cxiaojia/archive/2013/03/02/198177.html#Feedback0http://m.shnenglu.com/cxiaojia/comments/commentRss/198177.htmlhttp://m.shnenglu.com/cxiaojia/services/trackbacks/198177.html1、序列化定义

MFC文档-视图l构中,序列化机制可以实现内存中对象储存和加载?/span>

序列化机制分为序列化和反序列化,序列化是把内存中的对象以二进制文件的形式存储在磁盘中。反序列化是把序列化后生成的文g恢复到内存?/p>

2?/span>CArchivec?/span>

CArchive没有基类?/span>
CArchive允许以一个永久二q制Q通常为磁盘存储)的Ş式保存一个对象的复杂|络Q它可以在对象被删除Ӟq能怹保存。可以从怹存储中装载对象,在内存中重新构造它们。得数据永久保留的q程叫?/span>序列?#8221;?/span>
可以把一个归档对象看作一U二q制。象输入/输出一P归档与文件有兛_ƈ允许写缓冲区以及从硬盘读出或d数据。输?/span>/输出处理一pdASCII字符Q但是归文件以一U有效率、精l的格式处理二进制对象?/span>

3?/span>CArchive对象处理基础cd数据


必须在创Z?span style="font-family: 'Times New Roman'">CArchive对象之前Q创Z?/span>CFile对象。另外,必须信归文g的装?/span>/存储与文件的打开模式是兼容的。每一个文件只限于一个活动归文件?/span>
当构造一?span style="font-family: 'Times New Roman'">CArchive
对象Ӟ要把它附加给表示一个打开文g的类CFileQ或zc)的对象上。还要指定归文件将用于装蝲q是存储?/span>

CZQ?/p>

CFile file("1.txt",CFile::modeCreate | CFile::modeWrite); //定义一个文件流对象
 CArchive ar(&file,CArchive::store);  //定义一个序列化对象和文件流对象l定q指定归档方式ؓ储存Q加载的方式为CArchive::load
 int i=4;
 
char ch='a';
 
float f=1.3f;
 CString str(
"aa");
 ar
<<i<<ch<<f<<str; //储存到文?/span>


4?/span>CArchive对象处理自定义对象类型数?/strong>


CArchive对象不仅可以处理首要cdQ而且q能处理?/span>序列化而设计的Ҏ的类的对象。可以序列化的类有以下特点:

1、必MؓCObjectzcR?/span>直接或者间接的l承CObjectcR?/span>

2、必重写CObjectcȝSerialize成员函数?/p>

3?/span>使用DECLARE_SERIAL?/span>IMPLEMENT_SERIAL宏?/span>

4、必L一个默认构造函?/span>

在Serialize成员函数中完成保存和加蝲的功能?/p>

DECLARE_SERIAL( class_name ) 参数?/span>当前cd?/p>

IMPLEMENT_SERIAL( class_name, base_class_name, wSchema ) W一个参Cؓ当前cdQ第二个参数为父cȝ名,W三个参Cؓ该类的特定整型标?span style="font-family: 'Times New Roman'">,该标识将用来解序(重新实例?/span>)Q最ؓ0?/span>

CZQ?/p>

//DrawBase.h
class CDrawBase : public CObject //l承自CObject
{
public:
    DECLARE_SERIAL(CDrawBase)    
//W一个宏的位|,参数为当前类?/span>
    CDrawBase();//必须有一个默认构造函?/span>
    virtual void onDraw(CDC* pdc);
    
virtual ~CDrawBase();
public:
    UINT m_PenStyle;
    
int m_PenWidth;
    
int m_BkMode;
    
int m_BrushStyle;
    
int m_issx;
    
int m_isyy;
    COLORREF m_PenColor;
    COLORREF m_BackgroundColor;
    COLORREF m_BrushColor;
    CPoint m_ptBegin;
    CPoint m_ptEnd;
public:
    
void Serialize(CArchive& ar);//重写了Serialize成员函数
}
;

//DrawBase.cpp
IMPLEMENT_SERIAL(CDrawBase, CObject, 1//W二个宏的位|,W一个参Cؓ当前cdQ第二个参数为父cȝ名,W三个参Cؓ该类的特定整型标?该标识将用来解序(重新实例?Q最ؓ0
void CDrawBase::Serialize(CArchive& ar)
{
    CObject::Serialize(ar);
    
if(ar.IsStoring())//保存Q加载ؓar.IsLoading()
    {
        ar 
<<m_PenColor<<m_PenStyle<<m_PenWidth<<m_BrushColor<<m_BrushStyle<<m_issx<<m_isyy;
    }

    Else 
//加蝲
    {
        ar 
>>m_PenColor>>m_PenStyle>>m_PenWidth>>m_BrushColor>>m_BrushStyle>>m_issx>>m_isyy;
    }

}

重蝲提取Q?span style="font-family: 'Times New Roman'">>>Q和插入Q?/span><<Q是方便的归编E接口。它支持主要cd?/span>CObjectzcR?/span>
CArchiveq支持?/span>MFC Windows套接字类CSocket?/span>CSocketFile~程?/span>IsBufferEmpty成员函数也支持这U用?/span>

一些集合类也支持序列化Q?span style="font-family: 'Times New Roman'">CObArray,Vector,CPtrArray?/span>

?span style="font-family: 'Times New Roman'">MFC文-视图l构中,DoccL被系l设定好支持序列化的c,?/span>DoccM重写Serialize成员函数。在函数中对你要保存的对象序列化?/p>

完成之后Q点击菜单栏上的保存和打开可以实现序列化了?/p>

 






C加 2013-03-02 18:04 发表评论
]]>
vs2005,vs2008解决d变量d函数dcL脚本错误问题http://m.shnenglu.com/cxiaojia/archive/2012/11/12/195070.htmlC加C加Mon, 12 Nov 2012 04:35:00 GMThttp://m.shnenglu.com/cxiaojia/archive/2012/11/12/195070.htmlhttp://m.shnenglu.com/cxiaojia/comments/195070.htmlhttp://m.shnenglu.com/cxiaojia/archive/2012/11/12/195070.html#Feedback0http://m.shnenglu.com/cxiaojia/comments/commentRss/195070.htmlhttp://m.shnenglu.com/cxiaojia/services/trackbacks/195070.htmll一个控件添加变量的时候出现的脚本错误问题

解决ҎQ?/span>

1Q?/font>  打开开始菜单,点击q行按钮Q输?/span>regeditQ进入注册表界面

2Q?/font>  扑ֈ目录 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones

3Q?/font>  查看此目录下是否存在1000目录Q如果不存在则徏立此目录

4Q?/font>  ?/span>1000目录下创?/span>DWORD|名字?/span>1207Qgؓ0

5Q?/font>  重启vs2005/2008



C加 2012-11-12 12:35 发表评论
]]>
ƷþëƬ| ùþþۺ| ҹƷþþþþ| þþƷ| Ʒþ»| Ʒþþþþþþþþþþþþ| þóӰԺƷ777| þӰԺҹƬ| ձ޿һþ| 66ƷۺϾþþþþþ| þþþòҰ¸߳| þþƷ| aëƬþ| þݺҹҹ2020츾| ޹һ˾þþƷ| 99þþƷһëƬ| һɫۺϾþ| ҹƷþþþþ| ˾þô߽AVһ| þۺ| ޹պŷۺϾþ| þøݾƷԴվ| ޾Ʒþһ| պľþ| þþƷ| ƷŮþþþþ2018| ͵þþþƷר | þ޾Ʒۿ| þZYZԴվĶ| ˾þ뾫ƷĻ| Ʒξþþþ99վ| һaƬþëƬëƬ| Ʒպҹþ| 99þ99ֻѷѾƷ| ëƬŷëƬþþ| þֻоƷ4| þþ| Ʒþþþþ³| þоƷƵ| ĻþþƷ| ɫʹþۺ|