轉(zhuǎn)帖|使用教程|編輯:鮑佳佳|2021-06-03 10:12:37.107|閱讀 647 次
概述:前面一節(jié)中進(jìn)行了文檔、視圖和框架的概述,本節(jié)主要講解文檔、視圖、框架結(jié)構(gòu)中各對(duì)象之間的關(guān)系。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
前面一節(jié)中進(jìn)行了文檔、視圖和框架的概述,本節(jié)主要講解文檔、視圖、框架結(jié)構(gòu)中各對(duì)象之間的關(guān)系。開始前我們先了解一下mfc界面類庫(kù)Xtreme Toolkit Pro。
Xtreme Toolkit Pro:是屢獲殊榮的VC界面庫(kù),是MFC開發(fā)中最全面界面控件套包,它提供了Windows開發(fā)所需要的11種主流的Visual C++ MFC控件,包括Command Bars、Controls、Chart Pro、Calendar、Docking Pane、Property Grid、Report Control、Shortcut Bar、Syntax Edit、Skin Framework 和Task Panel。
點(diǎn)擊下載Xtreme Toolkit Pro最新試用版
各個(gè)對(duì)象之間的關(guān)系
文檔、視圖、框架結(jié)構(gòu)中涉及到的對(duì)象主要有:應(yīng)用程序?qū)ο蟆⑽臋n模板對(duì)象、文檔對(duì)象、視圖對(duì)象和框架窗口對(duì)象等。根據(jù)上一節(jié)的概述,大家對(duì)它們的概念已經(jīng)有所了解了,下面就對(duì)它們之間的關(guān)系進(jìn)行總結(jié)和概括,并對(duì)各個(gè)關(guān)系中用到的類的成員函數(shù)進(jìn)行介紹。
1. 應(yīng)用程序?qū)ο蟊4媪艘粋€(gè)文檔模板的列表。在任何對(duì)象中調(diào)用全局函數(shù)AfxGetApp都可以獲得應(yīng)用程序?qū)ο蟮闹羔槨Mㄟ^(guò)調(diào)用CWinAppEx::GetFirstDocTemplatePosition、CWinAppEx::GetNextDocTemplate函數(shù)可以遍歷所有的文檔模板。
2. 文檔模板對(duì)象用于維護(hù)文檔、視圖和框架窗口的映射關(guān)系,它包含有一個(gè)已打開文檔的列表。我們可以通過(guò)調(diào)用CDocTemplate::GetFirstDocPosition、CDocTemplate::GetNextDoc來(lái)遍歷該文檔模板對(duì)應(yīng)的所有文檔。
3. 框架窗口對(duì)象中包含有指向當(dāng)前活動(dòng)視圖對(duì)象的指針。AfxGetApp()->m_pMainWnd即為主框架窗口對(duì)象的指針。我們可以通過(guò)調(diào)用CFrameWndEx::GetActiveView來(lái)獲取當(dāng)前活動(dòng)視圖對(duì)象的指針,并且使用CFrameWndEx::GetActiveDocument函數(shù)可以獲得當(dāng)前活動(dòng)視圖對(duì)應(yīng)的文檔。
4. 文檔對(duì)象中維護(hù)著該文檔的視圖列表,以及創(chuàng)建該文檔的文檔模板對(duì)象的指針。我們可以通過(guò)調(diào)用CDocument::GetFirstViewPosition,CDocument::GetNextView來(lái)遍歷該文檔關(guān)聯(lián)的所有視圖,調(diào)用CDocument::GetDocTemplate獲取創(chuàng)建該文檔的文檔模板對(duì)象的指針。
5. 視圖是框架窗口的子窗口,它保存有指向?qū)?yīng)的文檔對(duì)象的指針。我們可以通過(guò)調(diào)用CView::GetParentFrame獲取其所屬的框架窗口對(duì)象的指針,調(diào)用CView::GetDocument獲取該視圖對(duì)應(yīng)的文檔對(duì)象的指針。
另外,在MDI多文檔程序中,調(diào)用CMDIFrameWnd::MDIGetActive可以獲取當(dāng)前活動(dòng)的MDI子窗口。
文檔和視圖的關(guān)系
應(yīng)用程序可以是單文檔程序也可以是多文檔程序。單文檔程序中主框架窗口和文檔框架窗口重合,而多文檔程序的主框架窗口中有客戶窗口,客戶窗口中又包含了多個(gè)文檔框架窗口。
文檔和視圖是一對(duì)多的關(guān)系。一個(gè)文檔可以對(duì)應(yīng)多個(gè)視圖,例如在Word中一個(gè)文檔有普通視圖、大綱視圖、Web版式視圖、閱讀版式視圖等多種視圖。而一個(gè)視圖只能屬于一個(gè)文檔。最簡(jiǎn)單的應(yīng)用程序是單文檔單視圖程序,除此之外還有單文檔多視圖程序、多文檔程序等。
每個(gè)文檔對(duì)象都保存著一個(gè)視圖列表,可以通過(guò)CDocument::AddView函數(shù)添加視圖,通過(guò)CDocument::RemoveView函數(shù)刪除視圖,在數(shù)據(jù)發(fā)生變化時(shí)調(diào)用CDocument::UpdateAllViews函數(shù)更新所有視圖。
在MFC中文檔可以有三種視圖模式:
1. 文檔有多個(gè)視圖對(duì)象,它們是同一個(gè)視圖類的對(duì)象,每個(gè)視圖對(duì)象位于一個(gè)獨(dú)立的文檔框架窗口中。
2. 文檔的基于同一個(gè)視圖類的多個(gè)視圖對(duì)象,位于同一個(gè)文檔框架窗口中。Word的子窗口就是這種視圖模式。
3.文檔的視圖對(duì)象屬于不同的視圖類,但所有的視圖對(duì)象位于同一文檔框架窗口中。
雞啄米在網(wǎng)上找到了一張分別對(duì)應(yīng)三種視圖模式的圖如下:
有關(guān)文檔、視圖和框架等對(duì)象之間的關(guān)系就講到這里了,謝謝大家一貫的支持。點(diǎn)擊查看系列完整教程。
轉(zhuǎn)載自:
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@ke049m.cn
文章轉(zhuǎn)載自: