?? untitled-13.txt
字號(hào):
將上面的運(yùn)算符掉個(gè)方向,就可以從檔案中讀取字符串了。
ly>> Stllflg;
可以用這種方式串行化的類包括: CString、CTime、CTimespan、C0leVariant、COleCurrency、C0le-
DateTime、C0leDateTimespan、CSize、CPoint和CRect。類型為SIZE、POINT和RECT的結(jié)構(gòu)也可
以串行化。
或許MFC串行化機(jī)制最強(qiáng)大的一面是:您能夠創(chuàng)建自己的可串行化類,使它們與
CArchive的插人和提取運(yùn)算符一起工作。并且為了使這些類工作,您也不必自己重載任何
運(yùn)算符。什么原因呢?因?yàn)?MFC為指向 C0bject派生類的實(shí)例的指針重載了<<和>>運(yùn)
算符。
作為示范,假定您已經(jīng)編寫了一個(gè)繪圖程序,它給出用戶用Cline類實(shí)例畫的線。再假
定CLine是直接或間接由C0bject派生來的可串行化類。如果pLines是CLine指針數(shù)組,
"Count是一個(gè)整型數(shù),保存數(shù)組中指針的個(gè)數(shù),而ar是一個(gè)CArchive對(duì)象,您可以按下面的
方式將每個(gè)CLine存檔,并同時(shí)對(duì)Clines進(jìn)行記數(shù):
ar<< "Count;
for(。nt。= o;。< "Count;。++)
<I<< PL。nes[i」子
相反地,也可以根據(jù)檔案中的信息重新創(chuàng)建CLines,并用下面的語句將pnnes初始化為
CLine指針:
ar>> "Count;
for( Int n= 0; n< "Count;。++)
ar>> vL。nesL。」;
怎樣編寫可串行化類,如 CLine呢?這很容易,下節(jié)就會(huì)介紹到。
如果數(shù)據(jù)串行化或并行化時(shí)有錯(cuò)誤發(fā)生,MFC會(huì)發(fā)送一個(gè)異常。異常的類型取決于錯(cuò)
誤的性質(zhì)。如果由于內(nèi)存不足,串行化請(qǐng)求失敗(例如:如果內(nèi)存太少,不足以創(chuàng)建一個(gè)正
在并行化的對(duì)象的實(shí)例),MFC會(huì)發(fā)送一個(gè)CMemoryException。如果由于文件1/O出錯(cuò),請(qǐng)求
失敗,則MFC發(fā)送一個(gè)CFileException。如果發(fā)生了其他錯(cuò)誤,MFC會(huì)發(fā)送一個(gè)CArchiveEx-
。如果您喜歡,您可以給這些類型的異常提供“捕捉”處理程序,制定錯(cuò)誤發(fā)生時(shí)自己
特有的處理方法。
6.2.2編寫可串行化類
如果一個(gè)對(duì)象支持串行化,那么它一定是可串行化類的實(shí)例。您可以按照以下五個(gè)步
驟編寫可串行化類:
1.直接或間接得到 CObject的派生類。
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -