《文檔視圖框架》PPT課件

《文檔視圖框架》PPT課件

ID:36895660

大?。?45.10 KB

頁(yè)數(shù):26頁(yè)

時(shí)間:2019-05-10

《文檔視圖框架》PPT課件_第1頁(yè)
《文檔視圖框架》PPT課件_第2頁(yè)
《文檔視圖框架》PPT課件_第3頁(yè)
《文檔視圖框架》PPT課件_第4頁(yè)
《文檔視圖框架》PPT課件_第5頁(yè)
資源描述:

《《文檔視圖框架》PPT課件》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)

1、文檔/視圖框架基本內(nèi)容文檔/視圖框架序列化CFile不適用的情況CCmdTargetCWinThreadCWinAppCWndCFrameWndCObject主要負(fù)責(zé)初始化、運(yùn)行和結(jié)束應(yīng)用程序的執(zhí)行。負(fù)責(zé)管理操作數(shù)據(jù)及顯示,并接收用戶(hù)的輸入。結(jié)論:CFrameWnd派生類(lèi)的負(fù)擔(dān)過(guò)重。一、文檔/視圖框架也是一種MVC架構(gòu)Model——DocumentView——ViewController——DocumentTemplate將數(shù)據(jù)操作和數(shù)據(jù)顯示、用戶(hù)界面分離程序每打開(kāi)一個(gè)文件時(shí),創(chuàng)建3個(gè)對(duì)象:一個(gè)文檔對(duì)象一個(gè)視圖對(duì)象一個(gè)窗口框架對(duì)象由文檔模板對(duì)象

2、負(fù)責(zé)管理文檔、視圖和框架窗體對(duì)象。CDocument::UpdateAllViews(…)CDocument::Serialize()該函數(shù)一般需要在文檔子類(lèi)中重載voidSXXXDoc::Serialize(CArchive&ar){if(ar.IsStoring()){//向文件中寫(xiě)數(shù)據(jù)(ar<<)}else{//從文件中讀數(shù)據(jù)(ar>>)}}文檔類(lèi)的常用成員函數(shù)視窗類(lèi)中的OnDraw成員函數(shù)每次當(dāng)視窗需要被重新繪制時(shí),應(yīng)用程序框架就要調(diào)用OnDraw函數(shù)。驅(qū)使程序調(diào)用OnDraw的兩個(gè)途徑:用戶(hù)改變窗口的尺寸;窗口恢復(fù)先前被遮蓋的部分;應(yīng)

3、用程序改變了窗口數(shù)據(jù);程序中調(diào)用Invalidate(或者InvalidateRect),通知Windows調(diào)用OnDraw函數(shù)常用視圖類(lèi)CScrollView:提供自動(dòng)滾動(dòng)或縮放功能。CFormView:由對(duì)話(huà)框模板創(chuàng)建,并具有和對(duì)話(huà)框一樣的設(shè)計(jì)方法。CRecordView:提供表單視圖直接與ODBC記錄集對(duì)象關(guān)聯(lián);和所有的表單視圖一樣,CRecordView也是基于對(duì)話(huà)框模板設(shè)計(jì)的。CEditView:提供包含編輯控件的視圖CRichEditView:提供包含復(fù)合編輯控件的視圖CListView:提供包含列表控件的視圖。CTreeView:

4、提供包含樹(shù)狀控件的視圖。相互引用關(guān)系CDocument有一個(gè)成員變量CDocTemplate*m_pDocTemplate,用于回指其DocumentTemplate;另有一個(gè)成員變量CPtrListm_viewList,表示它可以同時(shí)維護(hù)一系列的Views。CFrameWnd有一個(gè)成員變量CView*m_pViewActive,指向目前正作用中的View。亦可用CFrameWnd::GetActiveView()獲得視圖對(duì)象指針CFrameWnd::GetActiveDocument()獲得當(dāng)前活動(dòng)的文檔對(duì)象指針。CView有一個(gè)成員變量CD

5、ocument*m_pDocument,指向相關(guān)的文檔Document。CWnd::GetParentFrame可實(shí)現(xiàn)從視圖類(lèi)中獲取主框架指針。文檔視圖相互作用的典型實(shí)例切分窗口靜態(tài)切分:窗口第一次被創(chuàng)建時(shí),窗格就已經(jīng)被切分好了。最大窗格數(shù)目為16×16。動(dòng)態(tài)切分:允許用戶(hù)在任何時(shí)候?qū)Υ翱谶M(jìn)行切分。最大窗格數(shù)目為2×2。舉例:Graph一檔多視舉例:Rect(1)切分窗口類(lèi)BOOLCreate(CWnd*pParentWnd,intnMaxRows,intnMaxCols,SIZEsizeMin,CCreateContext*pContext,

6、DWORDdwStyle=WS_CHILD

7、WS_VISIBLE

8、WS_HSCROLL

9、WS_VSCROLL

10、SPLS_DYNAMIC_SPLIT,UINTnID=AFX_IDW_PANE_FIRST);BOOLCreateStatic(CWnd*pParentWnd,intnRows,intnCols,DWORDdwStyle=WS_CHILD

11、WS_VISIBLE,UINTnID=AFX_IDW_PANE_FIRST);(2)一檔多視MFC對(duì)于“一檔多視”提供下列三個(gè)模式:1)在各自MDI文檔窗口中包含同一個(gè)視圖類(lèi)的多個(gè)視圖對(duì)象。2)在同一

12、個(gè)文檔窗口中包含同一個(gè)視圖類(lèi)的多個(gè)視圖對(duì)象(即切分窗口運(yùn)用于SDI)3)在單獨(dú)一個(gè)文檔窗口中包含不同視圖類(lèi)的多個(gè)視圖對(duì)象。(例如,同一個(gè)文檔可同時(shí)有文字顯示方式及圖形顯示方式的視圖)。二、永久性對(duì)象與序列化內(nèi)存中的對(duì)象可以被以文件的形式存儲(chǔ)在永久性存儲(chǔ)介質(zhì)中,而當(dāng)應(yīng)用程序把它再?gòu)挠谰眯源鎯?chǔ)介質(zhì)讀入后,如果該對(duì)象在內(nèi)存中能恢復(fù)為原來(lái)的狀態(tài),那么這種對(duì)象就叫做永久性對(duì)象。在面向?qū)ο罄碚撝?,能使?duì)象成為永久性對(duì)象的機(jī)制叫做序列化。磁盤(pán)對(duì)象在內(nèi)存中的存儲(chǔ)格式轉(zhuǎn)換為文件的格式內(nèi)存中的對(duì)象把文件的格式恢復(fù)為內(nèi)存中的存儲(chǔ)格式所謂永久性對(duì)象,就是這種對(duì)象具有這

13、樣一種能力:它提供了一套描述自身的信息(例如對(duì)象的類(lèi)名稱(chēng)及數(shù)據(jù)在內(nèi)存中的存儲(chǔ)格式等)。當(dāng)應(yīng)用程序存儲(chǔ)對(duì)象時(shí),應(yīng)用程序可以把這些信息與對(duì)象的數(shù)據(jù)成員一起

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。