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

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文檔-視圖結構中,序列化機制可以實現內存中對象儲存和加載。

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

2、CArchive

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

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


必須在創建一個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; //儲存到文件


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


CArchive對象不僅可以處理首要類型,而且還能處理為序列化而設計的特殊的類的對象??梢孕蛄谢念愑幸韵绿攸c:

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毛片精品| 一区二区三区四区国产精品| 亚洲成色最大综合在线| 国产精品视频精品视频| 欧美三区在线| 欧美午夜宅男影院在线观看| 欧美激情影院| 国产精品久久久久久户外露出| 欧美午夜欧美| 国产欧美一区二区三区久久人妖| 国产日韩欧美在线播放不卡| 国产亚洲欧美一区二区三区| 经典三级久久| 亚洲精品一区二区三区99| 亚洲毛片在线观看.| 夜夜嗨av一区二区三区中文字幕 | 亚洲综合日韩中文字幕v在线| 一区二区三区av| 国产精品综合网站| 免费在线成人| 你懂的成人av| 免费看成人av| 免费亚洲婷婷| 欧美猛交免费看| 久久久久免费| 国产精品乱人伦一区二区 | 久久夜精品va视频免费观看| 欧美一区二区三区视频| 亚洲欧洲精品一区二区三区波多野1战4 | 99re在线精品| 亚洲一区网站| 久久久久久亚洲精品中文字幕| 欧美成人a∨高清免费观看| 日韩午夜黄色| 免费日本视频一区| 国产麻豆精品视频| 亚洲视频导航| 欧美黄免费看| 久久久久国产精品麻豆ai换脸| 国产精品成人免费视频| 亚洲第一在线| 久久香蕉国产线看观看网| 一区二区三区欧美成人| 欧美大片91| 在线色欧美三级视频| 欧美在线观看一二区| 日韩一区二区久久| 欧美国产精品va在线观看| 欧美国产日本高清在线| 欧美一区二区性| 亚洲全黄一级网站| 久久永久免费| 国语自产偷拍精品视频偷| 亚洲免费影视第一页| 亚洲精品在线观看视频| 欧美精品一区在线| 99在线热播精品免费| 欧美gay视频激情| 欧美一级片久久久久久久| 国产精品人成在线观看免费 | 欧美精品尤物在线| 亚洲麻豆av| 亚洲欧洲一区二区天堂久久 | 久久亚洲春色中文字幕| 国产又爽又黄的激情精品视频| 亚洲女优在线| 亚洲男人的天堂在线| 国产精品日韩在线一区| 亚洲女人av| 亚洲女优在线| 黄网动漫久久久| 久久人人97超碰精品888| 久久se精品一区精品二区| 国产亚洲精品高潮| 欧美wwwwww| 欧美激情第1页| 亚洲永久精品国产| 欧美一区二区精美| 亚洲国产欧美在线人成| 亚洲国产精品综合| 国产精品爱啪在线线免费观看| 亚洲欧美日韩精品综合在线观看| 亚洲欧美日韩中文视频| 激情综合视频| 亚洲欧洲在线视频| 国产精品一区二区在线观看不卡| 久久精品国产一区二区三区| 久久精品欧美日韩| 亚洲精品久久久久久一区二区 | 久色婷婷小香蕉久久| 亚洲免费观看视频| 亚洲婷婷综合久久一本伊一区| 国产欧美在线看| 欧美激情亚洲自拍| 国产精品入口日韩视频大尺度| 久久露脸国产精品| 欧美日韩国产欧美日美国产精品| 亚洲欧美成人一区二区在线电影| 欧美一区二区播放| 亚洲美女在线国产| 亚洲欧美激情一区| 亚洲欧洲日韩综合二区| 亚洲一区日韩在线| 亚洲精品无人区| 午夜在线电影亚洲一区| 亚洲精品一二区| 夜夜嗨av一区二区三区| 日韩亚洲精品在线| 激情六月综合| 一区二区不卡在线视频 午夜欧美不卡' | 亚洲黄色三级| 国产欧美一区二区白浆黑人| 欧美成人精品在线观看| 欧美视频中文字幕在线| 欧美大秀在线观看| 国产一区二区三区在线免费观看| 99pao成人国产永久免费视频| 在线观看91久久久久久| 亚洲一级影院| 亚洲私人影院在线观看| 老司机aⅴ在线精品导航| 小黄鸭视频精品导航| 欧美日本韩国一区| 欧美成人一区二免费视频软件| 国产午夜精品全部视频在线播放 | 欧美性事免费在线观看| 美乳少妇欧美精品| 国产视频在线一区二区| 亚洲性夜色噜噜噜7777| 亚洲一区二区成人| 欧美精品在线一区| 亚洲国产经典视频| 黄色亚洲精品| 久久福利资源站| 久久精品国产亚洲aⅴ| 国产精品日韩专区| 亚洲欧美综合网| 久久xxxx精品视频| 国产日韩欧美在线观看| 亚洲欧美日本视频在线观看| 欧美一二三区精品| 国产日产高清欧美一区二区三区| 亚洲男女自偷自拍图片另类| 欧美一级午夜免费电影| 国产欧美在线视频| 久久国产精品久久久久久久久久| 久久爱www.| 很黄很黄激情成人| 久久综合伊人77777麻豆| 女主播福利一区| 亚洲一区国产一区| 欧美一区影院| 国内一区二区在线视频观看| 久久精品av麻豆的观看方式| 久久米奇亚洲| 亚洲精品午夜精品| 国产精品大全| 久久精品99国产精品| 欧美激情第9页| 亚洲视频免费| 国产一区二区高清| 久久免费少妇高潮久久精品99| 欧美黄色免费| 亚洲一区二区视频| 国模 一区 二区 三区| 久久在线视频| 亚洲小说春色综合另类电影| 久久久久久网站| 亚洲精品中文字| 欧美一区二区在线| 欧美一级午夜免费电影| 老司机免费视频一区二区| 亚洲国产美女精品久久久久∴| 欧美国产亚洲另类动漫| 亚洲一区二区三区视频| 久久一区精品| 一区二区三欧美| 狠狠久久综合婷婷不卡| 欧美精品尤物在线| 久久久久免费观看| 亚洲婷婷在线| 亚洲欧洲一区| 欧美1区视频| 午夜在线成人av| 99精品视频免费观看视频| 国产香蕉97碰碰久久人人| 欧美精品免费视频| 久久久国产一区二区三区| 亚洲最新在线| 亚洲高清av| 久久一二三区| 欧美亚洲专区| 亚洲一区二区在线视频| 久久久亚洲国产美女国产盗摄| 亚洲精品系列| 欧美成人免费全部| 久久综合伊人77777| 久久成人18免费网站| 亚洲永久精品国产| 一区二区欧美日韩视频|