青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C小加

厚德 博學 求真 至善 The bright moon and breeze
posts - 145, comments - 195, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

MFC文檔序列化實現保存和加載

Posted on 2013-03-02 18:04 C小加 閱讀(8184) 評論(2)  編輯 收藏 引用 所屬分類: VC++

1、序列化定義

MFC文檔-視圖結構中,序列化機制可以實現內存中對象儲存和加載。

序列化機制分為序列化和反序列化,序列化是把內存中的對象以二進制文件的形式存儲在磁盤中。反序列化是把序列化后生成的文件恢復到內存。

2CArchive

CArchive沒有基類。
CArchive允許以一個永久二進制(通常為磁盤存儲)的形式保存一個對象的復雜網絡,它可以在對象被刪除時,還能永久保存。可以從永久存儲中裝載對象,在內存中重新構造它們。使得數據永久保留的過程就叫作序列化”
可以把一個歸檔對象看作一種二進制流。象輸入/輸出流一樣,歸檔與文件有關并允許寫緩沖區以及從硬盤讀出或讀入數據。輸入/輸出流處理一系列ASCII字符,但是歸檔文件以一種有效率、精練的格式處理二進制對象。

3CArchive對象處理基礎類型數據


必須在創建一個CArchive對象之前,創建一個CFile對象。另外,必須確信歸檔文件的裝入/存儲與文件的打開模式是兼容的。每一個文件只限于一個活動歸檔文件。
當構造一個CArchive對象時,要把它附加給表示一個打開文件的類CFile(或派生類)的對象上。還要指定歸檔文件將用于裝載還是存儲。

示例:

CFile file("1.txt",CFile::modeCreate | CFile::modeWrite); //定義一個文件流對象
 CArchive ar(&file,CArchive::store);  //定義一個序列化對象和文件流對象綁定并指定歸檔方式為儲存,加載的方式為CArchive::load
 int i=4;
 
char ch='a';
 
float f=1.3f;
 CString str(
"aa");
 ar
<<i<<ch<<f<<str; //儲存到文件


4CArchive對象處理自定義對象類型數據


CArchive對象不僅可以處理首要類型,而且還能處理為序列化而設計的特殊的類的對象。可以序列化的類有以下特點:

1、必須為CObject派生類。直接或者間接的繼承CObject類。

2、必須重寫CObject類的Serialize成員函數。

3使用DECLARE_SERIALIMPLEMENT_SERIAL宏。

4、必須有一個默認構造函數

在Serialize成員函數中完成保存和加載的功能。

DECLARE_SERIAL( class_name ) 參數為當前類名。

IMPLEMENT_SERIAL( class_name, base_class_name, wSchema ) 第一個參數為當前類名,第二個參數為父類類名,第三個參數為該類的特定整型標識,該標識將用來解序(重新實例化),最小為0

示例:

//DrawBase.h
class CDrawBase : public CObject //繼承自CObject
{
public:
    DECLARE_SERIAL(CDrawBase)    
//第一個宏的位置,參數為當前類名
    CDrawBase();//必須有一個默認構造函數
    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//第二個宏的位置,第一個參數為當前類名,第二個參數為父類類名,第三個參數為該類的特定整型標識,該標識將用來解序(重新實例化),最小為0
void CDrawBase::Serialize(CArchive& ar)
{
    CObject::Serialize(ar);
    
if(ar.IsStoring())//保存,加載為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;
    }

}

重載提取(>>)和插入(<<)是方便的歸檔編程接口。它支持主要類型和CObject派生類。
CArchive還支持使用MFC Windows套接字類CSocketCSocketFile編程。IsBufferEmpty成員函數也支持這種使用。

一些集合類也支持序列化,CObArray,Vector,CPtrArray

MFC文檔-視圖結構中,Doc類是被系統設定好支持序列化的類,在Doc類中重寫Serialize成員函數。在函數中對你要保存的對象序列化。

完成之后,點擊菜單欄上的保存和打開就可以實現序列化了。

 




Feedback

# re: MFC文檔序列化實現保存和加載   回復  更多評論   

2013-03-06 07:23 by http://getbestessays.com/
Very ncie greston i cegreat!
完成之后,點擊菜單欄上的保存和打開就可以實現序列化了。

# re: MFC文檔序列化實現保存和加載   回復  更多評論   

2013-03-07 13:06 by hadoopdev
文章寫的不錯,可以作為MFC入門者的參考教材。
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美午夜免费影院| 伊人色综合久久天天| 国产欧美日韩不卡免费| 亚洲一区二区三区视频| 亚洲国产精品一区| 欧美三区美女| 欧美成在线视频| 欧美日韩二区三区| 麻豆精品国产91久久久久久| 一本色道久久88亚洲综合88| 欧美日韩国产999| 免费欧美日韩国产三级电影| 国产精品看片你懂得| 日韩一级欧洲| 午夜久久黄色| 亚洲深夜福利视频| 久久久久亚洲综合| 亚洲欧洲一区二区三区久久| 能在线观看的日韩av| 欧美国产精品中文字幕| 亚洲免费在线视频| 久久亚洲二区| 久久精品国产99| 欧美三日本三级三级在线播放| 亚洲私人影院在线观看| 免费在线欧美视频| 欧美激情va永久在线播放| 美女爽到呻吟久久久久| 在线亚洲欧美| 久久乐国产精品| 久久久久久久性| 激情欧美一区二区| 老司机67194精品线观看| 午夜久久影院| 国内外成人免费激情在线视频网站 | 欧美伦理视频网站| 麻豆成人精品| 亚洲国产另类久久精品| 99在线|亚洲一区二区| 亚洲三级视频| 欧美日韩免费观看一区| 日韩一级成人av| 欧美在线一级视频| 亚洲激情av| 国产一区二区三区av电影 | 欧美高清视频一区二区| 亚洲视频一区二区免费在线观看| 久久久久久97三级| 欧美搞黄网站| 亚洲一线二线三线久久久| 国产精品劲爆视频| 久久一区免费| 在线视频亚洲欧美| 欧美电影电视剧在线观看| 亚洲第一中文字幕| 国产精品久久久久久久午夜片| 一区二区三区国产在线| 亚洲一区二区三区四区中文| 欧美高清在线| 欧美伊人久久大香线蕉综合69| 欧美在线国产| 在线观看的日韩av| 国产视频精品va久久久久久| 欧美一二区视频| 亚洲一区二区在线看| 激情综合在线| 欧美精品在线免费播放| 久久深夜福利免费观看| 欧美激情综合网| 女主播福利一区| 极品尤物久久久av免费看| 亚洲区一区二| 亚洲精品视频啊美女在线直播| 国产精品久久久久国产a级| 亚洲视频欧美在线| 亚洲精品乱码久久久久久按摩观| 国产毛片精品国产一区二区三区| 亚洲丶国产丶欧美一区二区三区 | 99国产一区| 1000部精品久久久久久久久| 欧美黑人在线播放| 久久精品视频播放| 久久天堂av综合合色| 亚洲人屁股眼子交8| 欧美一区二区国产| 一本色道**综合亚洲精品蜜桃冫 | 亚洲视频在线观看视频| 欧美中文字幕在线播放| 91久久久一线二线三线品牌| 欧美日韩第一页| 免费久久久一本精品久久区| 99这里只有精品| 亚洲精品中文字幕在线| 尹人成人综合网| 亚洲国产一区二区a毛片| 国产欧美日韩另类视频免费观看| 久久免费视频网| 久久久噜噜噜久久| 美女诱惑一区| 欧美系列一区| 欧美日韩一区二区三区在线看| 久久久综合精品| 欧美国产免费| 在线观看国产精品淫| 亚洲午夜精品一区二区| 亚洲免费观看高清在线观看 | 中文亚洲欧美| 欧美一区二区私人影院日本 | 亚洲伦伦在线| 西瓜成人精品人成网站| 久久天堂精品| 亚洲精品一线二线三线无人区| 99ri日韩精品视频| 亚洲一区国产精品| 欧美不卡福利| 亚洲激情影院| 欧美黑人多人双交| 久久大逼视频| 免费人成精品欧美精品| 欧美色中文字幕| 亚洲经典在线看| 久久久久久久久久久久久女国产乱| 欧美高清在线观看| 久久久久99| 最新精品在线| 亚洲国产精品一区在线观看不卡| 亚洲视频一二三| 欧美午夜精品久久久| 亚洲欧洲日本国产| 日韩小视频在线观看专区| 免费在线播放第一区高清av| 欧美日韩精品欧美日韩精品一 | 久久人人97超碰国产公开结果| 狼狼综合久久久久综合网 | 欧美色精品在线视频| 亚洲清纯自拍| 中日韩美女免费视频网址在线观看 | 亚洲黄一区二区三区| 久久精品国产一区二区电影| 猛男gaygay欧美视频| 久久漫画官网| 亚洲一区二区三区高清| 香蕉成人啪国产精品视频综合网| 亚洲一区不卡| 另类综合日韩欧美亚洲| 欧美激情1区2区| 国产欧美日韩综合精品二区| 一区二区三区国产在线| 欧美国产精品v| 欧美高清在线观看| 久久国产精品99国产| 欧美一区免费视频| 亚洲欧洲三级| 午夜国产精品影院在线观看| 国产精品亚洲а∨天堂免在线| 午夜在线a亚洲v天堂网2018| 亚洲国产第一页| 国内精品一区二区三区| 亚洲精品美女在线观看| 午夜欧美大片免费观看| 欧美成人精品三级在线观看| 欧美激情一二区| 亚洲精品日产精品乱码不卡| 亚洲伊人伊色伊影伊综合网| 久久精品国产清自在天天线| 免费亚洲婷婷| 欧美成人免费视频| 亚洲午夜电影网| 欧美一区二区三区在| 国产欧美综合一区二区三区| 91久久精品美女| 日韩视频免费大全中文字幕| 欧美一区二区三区另类| 国产乱码精品| 欧美成人亚洲成人| 国产精品www网站| 久久久久久久久蜜桃| 久久久亚洲精品一区二区三区| 原创国产精品91| 中日韩在线视频| 亚洲日本成人女熟在线观看| 久久先锋影音| 国产精品久久久久久久久果冻传媒 | 亚洲精品日本| 亚洲欧美欧美一区二区三区| 久久久久久久久蜜桃| 免费观看亚洲视频大全| 亚洲国产成人久久综合| 欧美成人一品| 久久精品国产99国产精品| 亚洲国产第一页| 欧美亚洲综合久久| 亚洲精品美女久久7777777| 国产精品五月天| 欧美日韩性视频在线| 久久免费国产精品1| 91久久精品美女高潮| 亚洲素人在线| 国产精品视屏| 久久国产一区二区三区|