版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、文檔/視圖框架,基本內(nèi)容,文檔/視圖框架 序列化 CFile 不適用的情況,主要負(fù)責(zé)初始化、運(yùn)行和結(jié)束應(yīng)用程序的執(zhí)行。,負(fù)責(zé)管理操作數(shù)據(jù)及顯示,并接收用戶的輸入。,結(jié)論: CFrameWnd派生類的負(fù)擔(dān)過重。,一、文檔/視圖框架,也是一種MVC架構(gòu) ModelDocument ViewView ControllerDocument Template 將數(shù)據(jù)操作和數(shù)據(jù)顯示、用戶界面分離 程序每打開一個(gè)文件時(shí),創(chuàng)建3個(gè)對(duì)象: 一個(gè)文檔對(duì)象 一個(gè)視圖對(duì)象 一個(gè)窗口框架對(duì)象 由文檔模板對(duì)象負(fù)責(zé)管理文檔、視圖和框架窗體對(duì)象。,CDocument:UpdateAllViews( ) CDocument:S
2、erialize( ) 該函數(shù)一般需要在文檔子類中重載 void SXXXDoc:Serialize(CArchive BOOL CreateStatic( CWnd* pParentWnd, int nRows, int nCols, DWORD dwStyle = WS_CHILD | WS_VISIBLE, UINT nID = AFX_IDW_PANE_FIRST );,(2)一檔多視,MFC對(duì)于“一檔多視”提供下列三個(gè)模式: 1)在各自MDI文檔窗口中包含同一個(gè)視圖類的多個(gè)視圖對(duì)象。 2)在同一個(gè)文檔窗口中包含同一個(gè)視圖類的多個(gè)視圖對(duì)象(即切分窗口運(yùn)用于SDI) 3)在單獨(dú)一個(gè)文檔窗
3、口中包含不同視圖類的多個(gè)視圖對(duì)象。(例如,同一個(gè)文檔可同時(shí)有文字顯示方式及圖形顯示方式的視圖)。,二、永久性對(duì)象與序列化,內(nèi)存中的對(duì)象可以被以文件的形式存儲(chǔ)在永久性存儲(chǔ)介質(zhì)中,而當(dāng)應(yīng)用程序把它再從永久性存儲(chǔ)介質(zhì)讀入后,如果該對(duì)象在內(nèi)存中能恢復(fù)為原來的狀態(tài),那么這種對(duì)象就叫做永久性對(duì)象。在面向?qū)ο罄碚撝校苁箤?duì)象成為永久性對(duì)象的機(jī)制叫做序列化 。,磁盤,對(duì)象在內(nèi)存中的存儲(chǔ)格式轉(zhuǎn)換為文件的格式,內(nèi)存中的對(duì)象,把文件的格式恢復(fù)為內(nèi)存中的存儲(chǔ)格式,所謂永久性對(duì)象,就是這種對(duì)象具有這樣一種能力:它提供了一套描述自身的信息(例如對(duì)象的類名稱及數(shù)據(jù)在內(nèi)存中的存儲(chǔ)格式等)。當(dāng)應(yīng)用程序存儲(chǔ)對(duì)象時(shí),應(yīng)用程序可以把
4、這些信息與對(duì)象的數(shù)據(jù)成員一起打包形成文件,存入永久性存儲(chǔ)體,而當(dāng)再將它讀入內(nèi)存時(shí),根據(jù)該文件中提供的信息,可以把數(shù)據(jù)按原樣組織起來,從而把對(duì)象原原本本恢復(fù)出來。 使一個(gè)類的對(duì)象可以是永久性對(duì)象,那么在聲明這個(gè)類的時(shí)候必須使用MFC定義的兩個(gè)宏: DECLARE_SERIAL IMPLEMENT_SERIAL,序列化,1、從CObject派生而來,即擁有了RTTI,動(dòng)態(tài)創(chuàng)建等機(jī)制 2、在類聲明中必須有DECLARE_SERIAL宏 3、在類實(shí)現(xiàn)中必須有IMPLEMENT_SERIAL宏 4、重載Serialize虛函數(shù),使它能夠適當(dāng)?shù)陌杨悇e的成員變量寫入文件中。 5、該類必須有一個(gè)缺省的構(gòu)造函數(shù)
5、。,對(duì)象的序列化,例如某類A為永久化類,如果它聲明為: Class A:public CObject DECLARE_SERIAL(A)/聲明了序列化 private: int m_X,m_Y; public: A(); /缺省的構(gòu)造函數(shù) Serialize(CArchive ,由CArchive對(duì)象實(shí)現(xiàn)序列化工作 CArchive對(duì)象重載了操作符 “” 對(duì)原始數(shù)據(jù)進(jìn)行序列化 (BYTE,WORD,LONG,DWORD,float,double,int,unsigned int,short和char) 可序列化對(duì)象 CString,CTime,CTimeSpan,COleVariant,COl
6、eCurreny,COleDateTime,COleDateTimeSpan,CSize,CPoint,CRect,SIZE,POINT和RECT,三、CFile類,計(jì)算機(jī)的各種應(yīng)用程序、文檔和各種圖形是以文件的形式組織的 文件是一塊存儲(chǔ)區(qū)域,可以包含任何以二進(jìn)制或文本方式記錄的信息 CFile類是MFC中文件操作的基類,支持二進(jìn)制文件,其派生類支持文本文件和內(nèi)存文件 文件操作一般是在構(gòu)造函數(shù)中打開,在析構(gòu)函數(shù)中關(guān)閉,CFile的構(gòu)造函數(shù),CFile的構(gòu)造函數(shù)有三種類型: CFile:CFile();僅僅有一個(gè)文件句柄,需要手工打開、關(guān)閉 CFile:CFile(int hFile);給出文件
7、句柄,需要手工關(guān)閉文件 CFile:CFile(LPCTSR lPszFileName,UINT nOpenFlags);最完整的構(gòu)造函數(shù),相當(dāng)于缺省構(gòu)造函數(shù)加上CFile:Open函數(shù) 例如: Char *pFileName=“test.dat”; CFile(pFileName,CFile:modeCreate|CFile:modeWrite);,CFile打開文件的方式,CFile:modeCreate創(chuàng)建方式打開文件,如文件已存在則長(zhǎng)度設(shè)置為0 CFile:modeNoTruncate 創(chuàng)建文件時(shí)如文件已存在不對(duì)其進(jìn)行截?cái)?CFile:modeRead 只讀方式打開文件 CFile:m
8、odeReadWrite 讀寫方式打開文件 CFile:modeWrite 寫入方式打開文件 CFile:shareCompat 在使用過程中允許其他進(jìn)程同時(shí)打開文件 CFile:shareDenyNone 在使用過程中允許其他進(jìn)程對(duì)文件進(jìn)行讀寫 CFile:shareDenyRead 在使用過程中不允許其他進(jìn)程對(duì)文件進(jìn)行讀取 CFile:shareDenyWrite 在使用過程中不允許其他進(jìn)程對(duì)文件進(jìn)行寫入 CFile:shareExclusive取消對(duì)其他進(jìn)程的所有訪問 CFile:typeBinary 設(shè)置文件為二進(jìn)制模式 CFile:typeText 設(shè)置文件為文本模式,其它有關(guān)函數(shù),
9、Abort()關(guān)閉文件及CFile對(duì)象,無視任何警告與錯(cuò)誤 Open()打開文件,若成功返回非零值 Close()關(guān)閉文件,禁止其它的讀寫操作,關(guān)閉后m_hFile的值為NULL 輸入輸出函數(shù) Read()將文件中的數(shù)據(jù)讀入緩沖區(qū) 使用方法:Read(void *lpBuf,UINT ncount),Write()將緩沖區(qū)的內(nèi)容寫到文件當(dāng)前的位置 使用方法:Write(const void *lpBuf,UINT nCount) 文件定位函數(shù) Seek()文件定位函數(shù),使用方法:Seek(LONG lOff,UINT nFrom) SeekToBegin()移動(dòng)文件定位指針到文件頭 SeekToEnd()移動(dòng)文件定位指針到文件尾 GetLength()返回DWORD型文件長(zhǎng)度 SetLength()設(shè)置文件的長(zhǎng)度,CFile:begin CFile:current CFile:end,BOOL GetStatus( CFileStatus,獲取文件的有關(guān)信息,CFile和CAr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高職農(nóng)業(yè)機(jī)械維修(農(nóng)機(jī)維修技術(shù))試題及答案
- 2026年巧克力機(jī)維修(巧克力機(jī)調(diào)試技術(shù))試題及答案
- 2025年大學(xué)道路運(yùn)輸(道路運(yùn)輸法規(guī))試題及答案
- 2025年高職城鄉(xiāng)規(guī)劃管理(規(guī)劃管理)試題及答案
- 2025年大學(xué)大二(會(huì)展設(shè)計(jì))會(huì)展空間設(shè)計(jì)布置創(chuàng)意綜合測(cè)試題及答案
- 2026年辦公設(shè)備銷售(客戶接待)試題及答案
- 2025年高職園藝(園藝應(yīng)用能力)試題及答案
- 2026年集成電路制造設(shè)備項(xiàng)目可行性研究報(bào)告
- 2025年高職造型藝術(shù)(繪畫基礎(chǔ)技法)試題及答案
- 2025年高職尺寸公差控制(零件精度保障)試題及答案
- 2026云南省產(chǎn)品質(zhì)量監(jiān)督檢驗(yàn)研究院招聘編制外人員2人筆試模擬試題及答案解析
- 營(yíng)養(yǎng)風(fēng)險(xiǎn)篩查2002臨床應(yīng)用
- (2025年版)慢性腎臟病高磷血癥臨床管理中國(guó)專家共識(shí)解讀
- 2025年菏澤巨野縣高鐵北站公開招聘客運(yùn)服務(wù)人員(6人)備考筆試試題及答案解析
- 2026年陜西能源職業(yè)技術(shù)學(xué)院教師招聘(42人)參考筆試題庫附答案解析
- 2025年榆林市住房公積金管理中心招聘(19人)筆試考試參考題庫及答案解析
- 福州古厝課件
- 2026年鞍山職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能考試題庫參考答案詳解
- 眩暈護(hù)理的研究方向與趨勢(shì)
- 2025年新公開選拔中小學(xué)校長(zhǎng)筆試試題與答案
- 2025年度吊燈市場(chǎng)調(diào)研:時(shí)尚美觀、風(fēng)格多樣及餐廳客廳需求
評(píng)論
0/150
提交評(píng)論