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

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>
            欧美激情无毛| 亚洲女与黑人做爰| 欧美国产第二页| 亚洲免费大片| 91久久久精品| 欧美激情一区二区三区四区| 日韩视频在线一区| 亚洲精品乱码久久久久久按摩观 | 尤物yw午夜国产精品视频明星| 羞羞视频在线观看欧美| 欧美一级日韩一级| 国产性天天综合网| 欧美国产专区| 国产精品99免费看| 久久aⅴ国产紧身牛仔裤| 久久精品一二三区| 亚洲视频一区二区在线观看| 亚洲影院在线| 性欧美超级视频| 午夜伦理片一区| 国产日韩精品一区观看 | 国产一区91精品张津瑜| 免费观看亚洲视频大全| 欧美猛交免费看| 欧美一区二区三区婷婷月色| 久久午夜色播影院免费高清| 一本大道久久a久久精品综合| 亚洲女性喷水在线观看一区| 亚洲三级电影全部在线观看高清| 一区二区三区精品| 亚洲国产成人久久综合| 日韩一区二区免费高清| 狠狠噜噜久久| 在线亚洲欧美| 日韩视频免费观看高清在线视频| 午夜精品区一区二区三| 999亚洲国产精| 久久av一区二区| 亚洲一区二区三区在线播放| 久久在线免费| 欧美一区国产一区| 欧美日韩在线精品一区二区三区| 久久久久国产精品人| 欧美日韩国产影院| 欧美激情久久久| 黑丝一区二区三区| 午夜精品久久久久久久白皮肤| 亚洲精品综合精品自拍| 久久久精品999| 久久精品二区三区| 国产精品一二三四| 99精品欧美一区二区三区综合在线| 一区二区视频免费在线观看| 午夜精品久久久久久久蜜桃app| 夜夜夜久久久| 欧美精品一区二区三区蜜桃 | 亚洲一区二区三区高清不卡| 欧美成人黑人xx视频免费观看| 久久精品一区二区| 国产欧美精品一区二区三区介绍| 亚洲乱码精品一二三四区日韩在线 | 蜜臀99久久精品久久久久久软件 | 新片速递亚洲合集欧美合集| 欧美日韩免费观看一区三区| 亚洲激情欧美激情| 亚洲久久一区| 欧美激情一二区| 亚洲区免费影片| 99ri日韩精品视频| 欧美日韩成人精品| 在线一区二区三区四区| 亚洲综合精品四区| 国产精品一二三四区| 欧美一二三视频| 久久亚洲精品一区二区| 狠狠爱www人成狠狠爱综合网| 欧美激情日韩| 国产欧美一区二区精品婷婷 | 性欧美1819sex性高清| 国产精品伦一区| 香蕉久久夜色| 美女国产精品| 亚洲精品欧美日韩| 欧美网站大全在线观看| 亚洲综合清纯丝袜自拍| 久久精品卡一| 亚洲丰满在线| 欧美日韩精品一区二区三区| 亚洲素人在线| 久久综合九色综合欧美狠狠| 亚洲区欧美区| 国产精品青草久久| 久久精品综合一区| 亚洲精品韩国| 欧美制服丝袜第一页| 在线成人欧美| 欧美天天综合网| 新67194成人永久网站| 欧美激情视频在线免费观看 欧美视频免费一 | 国产精品久久久久久久久久直播| 亚洲伊人伊色伊影伊综合网| 久久久欧美精品sm网站| 亚洲毛片av在线| 国产精品视频福利| 美日韩精品免费| 亚洲少妇自拍| 欧美成人综合在线| 香蕉视频成人在线观看| 亚洲三级电影全部在线观看高清| 国产精品国产a级| 欧美一区二粉嫩精品国产一线天| 亚洲高清三级视频| 久久国产精品99精品国产| 在线成人欧美| 国产欧美精品国产国产专区| 欧美国产日韩一区二区在线观看| 亚洲欧美国产精品桃花| 亚洲精品美女在线| 免费观看成人鲁鲁鲁鲁鲁视频 | 亚洲破处大片| 国产一区二区精品久久| 欧美日韩综合久久| 免费久久久一本精品久久区| 欧美在线免费| 亚洲在线1234| 99精品福利视频| 亚洲电影免费在线| 老司机久久99久久精品播放免费| 亚洲免费视频网站| 夜色激情一区二区| 亚洲人在线视频| 精品1区2区3区4区| 国产亚洲欧美日韩精品| 国产麻豆91精品| 欧美午夜精品一区| 欧美日韩在线电影| 欧美日韩精品国产| 欧美精品1区| 欧美久久久久免费| 蜜桃av一区二区三区| 亚洲高清不卡一区| 久久精品人人做人人爽电影蜜月| 亚洲综合首页| 午夜精品成人在线| 亚洲欧美日韩在线一区| 亚洲综合大片69999| 亚洲欧美精品一区| 亚洲欧美在线高清| 午夜精品剧场| 欧美一区二区黄色| 久久精品视频播放| 久久―日本道色综合久久| 久久精品成人一区二区三区| 久久婷婷麻豆| 欧美激情欧美激情在线五月| 美女网站久久| 亚洲国产天堂久久综合网| 91久久精品国产91性色tv| 99re热这里只有精品视频| 一区二区三区av| 亚洲女人av| 欧美在线视频免费播放| 麻豆成人在线播放| 欧美精品亚洲一区二区在线播放| 欧美日韩国产麻豆| 国产老女人精品毛片久久| 怡红院av一区二区三区| 亚洲人成在线免费观看| 亚洲小视频在线观看| 欧美在线你懂的| 欧美黄色小视频| 一区二区三区 在线观看视频| 亚洲欧美日韩精品一区二区 | 欧美承认网站| 一本久道久久综合婷婷鲸鱼| 欧美一区二区三区精品电影| 久久午夜电影| 欧美视频二区| 狠狠综合久久av一区二区小说 | 国产精品久久一级| 伊人久久亚洲影院| 亚洲宅男天堂在线观看无病毒| 久久精品国产久精国产爱| 亚洲国产女人aaa毛片在线| 亚洲一区久久久| 欧美成人免费视频| 国产日韩欧美不卡| 99国产精品一区| 老司机67194精品线观看| 中文欧美字幕免费| 欧美va亚洲va日韩∨a综合色| 国产精品欧美精品| 亚洲精选一区| 欧美成人免费视频| 亚洲女女女同性video| 欧美日韩精品久久久| 最新成人在线| 久久尤物电影视频在线观看| 亚洲性视频h| 欧美精品一区二区三|