step1:修改該類,從cobject 繼承
class cgraph:public cobject
step2:實現void cgraph::serialize(carchive& ar)函式
step3:類中實現乙個空的建構函式
step4:在類開始處增加支援序列化的巨集 declare_serial(cgraph)
step5:定義類的版本號 implement_serial(cgraph, cobject, 1 )
具體實現**:
類定義:
class cgraph:public cobject
cgraph::~cgraph()
}void cgraph::draw(cdc *pdc)
pdc->selectobject(poldbrush);
}序列化儲存資料:
cclientdc dc(this);
cbrush *pbrush=cbrush::fromhandle((hbrush)getstockobject(null_brush));
dc.selectobject(pbrush);
switch(m_ndrawtype)
cgraph *pgraph=new cgraph(m_ndrawtype,m_ptorigin,point);
//m_obarray.add(pgraph);
cgraphicdoc *pdoc=getdocument();
pdoc->m_obarray.add(pgraph);
序列化讀取資料:
int ncount;
//ncount=m_obarray.getsize();
ncount=pdoc->m_obarray.getsize();
for(int i=0;idraw(pdc);
((cgraph*)pdoc->m_obarray.getat(i))->draw(pdc);
}string table中idr_mainframe字串資源中各子串的含義
n(1)cdoctemplate::windowtitle,主視窗標題欄上的字串,mdi程式不需要指定,將以idr_mainframe字串為預設值。
n(2)cdoctemplate::docname,預設文件的名稱。如果沒有指定,預設文件的名稱是無標題。
n(3)cdoctemplate::filenewname,文件型別的名稱。如果應用程式支援多種型別的文件,此字串將顯示在"file/new"對話方塊中。如果沒有指定,就不能夠在"file/new"對話方塊處理這種檔案。
n(4)cdoctemplate::filtername,文件型別的描述和乙個適用於此型別的萬用字元過濾器。這個字串將出現在「file/open」對話方塊中的檔案型別列表框中。要和cdoctemplate::filterext一起使用。
n(5)cdoctemplate::filterext,文件的副檔名。如果沒有指定,就不能夠在「file/open」對話方塊中處理這種文件。要和cdoctemplate::filtername一起使用。
n(6)cdoctemplate::regfiletypeid,如果你以::registershellfiletypes向系統的登錄檔註冊檔案型別,此值會出現在hey_classes_root之下成為其子項,並僅供windows內部使用。如果沒有指定,這種檔案型別就無法註冊。
n(7)cdoctemplate::regfiletypename,這也是儲存在登錄檔中的檔案型別名稱。它會顯示於程式中用以訪問登錄檔的對話方塊內。
document/view結構
n在mfc中,文件類負責管理資料,提供儲存和載入資料的功能。視類負責資料的顯示,以及給使用者提供對資料的編輯和修改功能。
nmfc給我們提供document/view結構,將乙個應用程式所需要的「資料處理與顯示」的函式空殼都設計好了,這些函式都是虛函式,我們可以在派生類中重寫這些函式。有關檔案讀寫的操作在cdocument的serialize函式中進行,有關資料和圖形顯示的操作在cview的ondraw函式中進行。我們在其派生類中,只需要去關注serialize和ondraw函式就可以了,其它的細節我們不需要去理會,程式就可以良好地執行。
nmfc給我們提供document/view結構,是希望我們將精力放在資料結構的設計和資料顯示的操作上,而不要把時間和精力花費在物件與物件之間、模組與模組之間的通訊上。
n乙個文件物件可以和多個視類物件相關聯,而乙個視類物件只能和乙個文件物件相關聯。
vc文件序列化
1.carchive在選單開啟儲存時的 cfile file 1.txt cfile modecreate cfile modewrite carchive ar file,carchive store int i 4 char ch a float f 1.3f cstring str ar 以上...
C 類的序列化和反序列化
在很多通訊或者資料儲存的過程中,都需要序列化和反序列化的過程。在c 中,如果想要進行自定義類的序列化,只需要簡單地在定義類的時候新增serializable標籤即可。如 serializable publicclassperson 經常用到的序列化方式有兩種 二進位制和xml,分為由system.r...
vc 上的MFC的物件序列化和反序列化
注意點 1.必須型別序列化宣告 declare serial person 2.必須寫出實現巨集 implement serial person,cobject,versionable schema 2 3.重寫cobject中的serialize函式 void person serialize c...