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

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>
            久久国内精品自在自线400部| 久久爱www久久做| 欧美成人午夜77777| 欧美在线黄色| 在线国产精品一区| 欧美激情一区二区三区四区| 另类激情亚洲| 99精品视频免费观看| 99精品视频免费全部在线| 国产精品v欧美精品∨日韩| 欧美一级欧美一级在线播放| 亚洲一区在线播放| 狠狠色丁香婷婷综合影院| 免费在线看成人av| 欧美精品www| 午夜欧美精品| 模特精品在线| 亚洲视频在线观看| 久久精精品视频| 91久久视频| 亚洲国产精品一区| 91久久综合亚洲鲁鲁五月天| 亚洲国产美国国产综合一区二区| 久久综合九九| 午夜一级久久| 久久在线播放| 午夜免费在线观看精品视频| 久久中文久久字幕| 西西裸体人体做爰大胆久久久| 久久一区免费| 午夜激情一区| 欧美粗暴jizz性欧美20| 欧美在线一二三四区| 免费看亚洲片| 久久久99爱| 国产精品二区三区四区| 欧美成人精品在线| 国产日韩欧美a| av成人免费在线观看| 亚洲国产精品久久久久秋霞蜜臀| 亚洲一区在线播放| 亚洲视频国产视频| 欧美插天视频在线播放| 久久久久久久高潮| 国产女主播一区二区| 亚洲黄一区二区| 影音先锋久久久| 欧美一区二区三区免费视| 亚洲桃色在线一区| 欧美高清在线观看| 欧美国产一区二区| 狠狠色香婷婷久久亚洲精品| 亚洲一卡久久| 午夜精品久久久久久久99水蜜桃| 欧美精品www在线观看| 亚洲福利国产| 亚洲片区在线| 暖暖成人免费视频| 亚洲国产成人久久综合| 亚洲激情av在线| 欧美成人按摩| 亚洲韩日在线| 9l国产精品久久久久麻豆| 欧美搞黄网站| 99精品热视频只有精品10| 一本色道久久综合亚洲精品不卡| 欧美韩日一区二区三区| 亚洲经典视频在线观看| 日韩一级成人av| 欧美日韩国产综合新一区| 亚洲美女视频在线观看| 中文精品视频一区二区在线观看| 欧美日韩成人在线| 中国成人黄色视屏| 欧美一区亚洲一区| 国内外成人免费激情在线视频网站| 欧美在线一区二区| 欧美国产日韩精品免费观看| 亚洲精品久久久蜜桃| 欧美日本韩国一区二区三区| 亚洲最新视频在线播放| 欧美一区激情视频在线观看| 国产亚洲综合精品| 欧美xart系列高清| 在线一区日本视频| 久久久999精品免费| 91久久国产综合久久蜜月精品| 欧美激情va永久在线播放| 夜夜嗨av一区二区三区四区| 亚洲综合首页| 久久久999精品免费| 在线日韩av| 国产精品电影在线观看| 久久国产主播精品| 亚洲精品在线看| 久久精品视频在线看| 亚洲日本aⅴ片在线观看香蕉| 国产精品久久久久秋霞鲁丝| 久久精品99国产精品| 亚洲人成毛片在线播放女女| 欧美一区二区| 亚洲裸体视频| 国产一区在线观看视频| 欧美激情乱人伦| 欧美一区二区三区免费在线看| 欧美国产日韩亚洲一区| 午夜一区二区三区不卡视频| 亚洲高清久久网| 国产精品视频99| 欧美激情一区二区三区蜜桃视频 | 欧美午夜精品久久久久久久| 久久国产黑丝| 亚洲午夜一二三区视频| 亚洲第一搞黄网站| 久久亚洲国产成人| 亚洲欧美中文在线视频| 日韩一级精品| 亚洲第一色中文字幕| 国产精品卡一卡二| 欧美精品一区二| 久久蜜桃香蕉精品一区二区三区| 亚洲网在线观看| 日韩亚洲精品在线| 欧美激情精品久久久久久大尺度| 久久国产精品免费一区| 亚洲欧美高清| 亚洲视频自拍偷拍| 日韩写真视频在线观看| 亚洲欧洲日韩在线| 在线欧美一区| 亚洲国产你懂的| 亚洲国产精品一区二区尤物区 | 国产毛片一区二区| 国产精品久久久久久久久久尿 | 国产精品一区二区三区成人| 国产精品igao视频网网址不卡日韩| 欧美国产日产韩国视频| 免费亚洲一区二区| 噜噜噜久久亚洲精品国产品小说| 欧美专区在线| 久久久亚洲国产天美传媒修理工| 久久精品国产成人| 久久精品女人天堂| 久久尤物视频| 欧美精品久久99久久在免费线| 久久婷婷国产综合尤物精品| 久久久在线视频| 麻豆国产精品777777在线| 模特精品裸拍一区| 欧美男人的天堂| 欧美日韩一区二区三区免费| 欧美私人网站| 国产欧美二区| 在线观看三级视频欧美| 亚洲人成网站999久久久综合| 亚洲精品社区| 亚洲在线视频| 久久久久久**毛片大全| 欧美电影在线观看完整版| 亚洲黄色影院| 亚洲日本成人网| 日韩视频一区二区三区在线播放| 一本一本久久a久久精品综合妖精| 在线视频日本亚洲性| 香蕉久久夜色| 久久这里只有| 亚洲激情午夜| 亚洲自拍偷拍视频| 久久久欧美一区二区| 欧美精品在线观看播放| 国产精品一区二区三区久久| 精品不卡一区| 亚洲一区二区免费| 久久久精品999| 亚洲精品人人| 欧美在线资源| 欧美欧美全黄| 激情五月综合色婷婷一区二区| 亚洲理论在线| 久久久久99精品国产片| 亚洲黄色有码视频| 欧美一级理论片| 欧美日本在线观看| 一区二区在线视频| 亚洲一区日韩| 亚洲国产精品成人久久综合一区| 亚洲已满18点击进入久久| 欧美成人精品福利| 国产一区二区丝袜高跟鞋图片| 日韩视频中文| 欧美成人精品一区二区三区| 亚洲在线一区| 欧美日韩一区二区三区免费看| 伊人精品成人久久综合软件| 亚洲欧美区自拍先锋| 亚洲二区在线| 久久久久久久网站| 国产亚洲aⅴaaaaaa毛片| 亚洲伊人色欲综合网| 亚洲国产精品成人一区二区|