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

C小加

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

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

Posted on 2013-03-02 18:04 C小加 閱讀(8213) 評論(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>
            欧美激情第五页| 欧美精品久久久久久久| 国产精品色网| 午夜日韩av| 欧美在线观看视频在线| 国产揄拍国内精品对白| 久久天天躁狠狠躁夜夜av| 欧美一区二区在线观看| 加勒比av一区二区| 欧美成人资源网| 欧美久久一区| 亚洲综合视频1区| 亚洲欧美日韩在线综合| 韩国一区二区三区在线观看| 欧美v国产在线一区二区三区| 欧美a级一区| 在线一区二区日韩| 亚洲欧美中日韩| 在线日韩欧美| 夜夜精品视频| 国产亚洲欧美色| 亚洲欧洲日本专区| 欧美午夜精品久久久久久人妖| 欧美一区永久视频免费观看| 久久一综合视频| 亚洲一区日本| 久久综合五月天婷婷伊人| 中国日韩欧美久久久久久久久| 亚洲午夜视频| 亚洲日韩中文字幕在线播放| 亚洲午夜国产成人av电影男同| 伊甸园精品99久久久久久| 亚洲精品一区二区在线观看| 国产视频久久| 99视频日韩| 亚洲国产导航| 亚洲欧美视频在线观看| 亚洲免费观看高清在线观看| 亚洲欧美中文在线视频| 夜夜嗨av一区二区三区网站四季av| 午夜精品一区二区三区四区| 亚洲免费成人av电影| 欧美在线观看天堂一区二区三区| 一区二区三区四区五区视频 | 欧美二区在线播放| 国产精品欧美一区喷水| 亚洲电影免费观看高清| 国产一区二区三区免费不卡| 一区二区三区你懂的| 亚洲国产欧美在线人成| 亚洲视频一起| 99视频在线精品国自产拍免费观看| 久久黄色小说| 久久高清福利视频| 国产精品久久久91| 亚洲精品免费观看| 亚洲人精品午夜| 久久精品国产亚洲a| 欧美在线视频一区| 国产精品一区二区久久久| 99精品国产99久久久久久福利| 日韩午夜免费| 欧美黄色片免费观看| 欧美激情a∨在线视频播放| 一区二区自拍| 久久久久欧美精品| 麻豆91精品| 伊人天天综合| 美女福利精品视频| 亚洲成在线观看| 亚洲激情精品| 欧美黄在线观看| 日韩一级大片| 亚洲影视综合| 国产欧美一区二区三区视频| 亚洲欧美日韩成人高清在线一区| 欧美一区国产一区| 国产一区久久| 蜜臀av在线播放一区二区三区| 欧美国内亚洲| 一区二区三区国产精品| 欧美亚州一区二区三区| 午夜精品久久久久久| 狂野欧美激情性xxxx| 亚洲激情av| 欧美日韩在线播放三区四区| 亚洲一区二区三区视频| 久久国产综合精品| 在线视频成人| 欧美日韩视频专区在线播放 | 久久婷婷蜜乳一本欲蜜臀| 欧美成人资源网| 在线一区亚洲| 国产日韩在线亚洲字幕中文| 久久九九免费| 亚洲精品小视频| 久久国产精品久久w女人spa| 亚洲成人在线免费| 欧美日韩免费网站| 久久国产精品久久国产精品| 亚洲国内高清视频| 欧美一激情一区二区三区| 在线观看一区二区精品视频| 欧美精品在线视频| 午夜免费久久久久| 亚洲国产精品va在线看黑人动漫| 亚洲综合成人婷婷小说| 影音先锋久久| 国产精品久久久久高潮| 免费一级欧美在线大片| 亚洲性av在线| 亚洲第一网站免费视频| 欧美一区二区三区视频在线观看| 亚洲欧洲精品成人久久奇米网| 国产精品xnxxcom| 另类春色校园亚洲| 午夜精品理论片| 日韩一区二区免费高清| 奶水喷射视频一区| 欧美在线免费观看| 中国亚洲黄色| 亚洲精品社区| 一区二区亚洲| 国产一区二区三区在线观看精品| 欧美三级日本三级少妇99| 蜜臀av在线播放一区二区三区| 欧美一区二区播放| 在线一区二区日韩| 亚洲三级电影在线观看| 欧美国产精品中文字幕| 久久精品一区二区三区四区| 午夜精品在线视频| 亚洲视频电影图片偷拍一区| 亚洲精品久久久蜜桃| 国产一区二区三区四区| 国产日产亚洲精品系列| 国产精品毛片a∨一区二区三区| 欧美精品不卡| 欧美多人爱爱视频网站| 另类欧美日韩国产在线| 久久免费国产精品1| 久久激情一区| 久久riav二区三区| 欧美一级专区| 欧美一区二区视频在线观看2020| 午夜精品久久久久久久久 | 亚洲国产日韩综合一区| 欧美国产欧美综合 | 香蕉久久一区二区不卡无毒影院| 亚洲影院一区| 香蕉久久夜色精品国产使用方法| 亚洲欧美中文日韩在线| 欧美综合激情网| 久久精品视频在线看| 久久久亚洲欧洲日产国码αv | 亚洲第一精品福利| 亚洲丶国产丶欧美一区二区三区| 伊人久久大香线蕉av超碰演员| 在线成人中文字幕| 91久久国产综合久久| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美大片一区二区| 欧美777四色影视在线| 欧美精品一区二区三| 欧美日韩国产色站一区二区三区| 欧美日韩免费一区二区三区视频| 欧美日韩综合久久| 国产欧美日韩一区二区三区在线观看 | 亚洲你懂的在线视频| 久久av老司机精品网站导航| 久久久久久网址| 亚洲高清中文字幕| 一区二区国产在线观看| 欧美伊人久久久久久久久影院| 久久视频国产精品免费视频在线| 欧美高清在线观看| 国产精品区二区三区日本| 精品成人乱色一区二区| 日韩一级黄色大片| 欧美一区激情| 91久久一区二区| 午夜久久久久久久久久一区二区| 久久频这里精品99香蕉| 欧美视频一区在线观看| 国产综合自拍| 亚洲桃花岛网站| 免费不卡亚洲欧美| 亚洲影视综合| 欧美激情一区二区三区成人| 国产日韩精品在线| 日韩视频在线一区二区| 久久国产精品亚洲77777| 亚洲激情专区| 久久久www成人免费精品| 欧美涩涩视频| 最新国产拍偷乱拍精品| 久久久久久久综合| 一本色道久久综合| 免费观看日韩av| 国内精品久久久久久久影视麻豆 |