資源描述:
《Windows程序設(shè)計(jì)教程 教學(xué)課件 作者 郭皞巖 屈景輝 廖琪梅 第11章-文檔視圖界面.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、Windows程序設(shè)計(jì)教程第11章文檔/視圖界面文檔/視圖結(jié)構(gòu)是在VisualC++中,使用MFC開發(fā)基于文檔應(yīng)用程序的基本框架。在這個(gè)框架中,數(shù)據(jù)的維護(hù)及其顯示是分別由兩個(gè)不同的、但又彼此緊密相關(guān)的對象——文檔和視圖負(fù)責(zé)的。本章將主要圍繞這一結(jié)構(gòu)的各個(gè)環(huán)節(jié)展開討論,理解這一結(jié)構(gòu)的原理和機(jī)制對基于文檔/視圖結(jié)構(gòu)的MFC應(yīng)用程序開發(fā)具有重要作用。基本概念11.1單文檔和多文檔界面應(yīng)用程序的實(shí)現(xiàn)11.2窗口分割與多視11.311.1基本概念可以把文檔看作是數(shù)據(jù)容器,而視圖則可以看作是查看數(shù)據(jù)的窗口或是和數(shù)據(jù)發(fā)生交互
2、的窗口。本節(jié)對MFC中文檔/視圖結(jié)構(gòu)的概念及其應(yīng)用作進(jìn)一步介紹。11.1.1概述MFC文檔/視圖結(jié)構(gòu)是一種新型的應(yīng)用程序結(jié)構(gòu),它的優(yōu)點(diǎn)主要包括:實(shí)現(xiàn)了數(shù)據(jù)存儲(chǔ)和顯示的分離,提供了常用的標(biāo)準(zhǔn)操作界面,以及支持打印預(yù)覽功能等。一般情況下,采用文檔/視圖結(jié)構(gòu)的應(yīng)用程序至少應(yīng)由以下對象組成:應(yīng)用程序?qū)ο螅ㄒ话銥镃WinApp派生對象)、框架窗口對象(一般為CFrmeWnd派生對象)、文檔對象(一般為CDocument派生對象)、視圖對象(一般為CView派生對象)等。除應(yīng)用程序?qū)ο笸猓渌麑ο蟮年P(guān)系如圖11.1所示。圖
3、11.1文檔、視圖以及框架的關(guān)系一個(gè)文檔可以對應(yīng)多個(gè)不同視圖,而一個(gè)視圖一般只對應(yīng)一個(gè)文檔。當(dāng)文檔數(shù)據(jù)發(fā)生變化時(shí),視圖顯示的狀態(tài)也會(huì)隨之變化;對于多個(gè)視圖的情況,基于同一文檔的多個(gè)視圖的顯示同步變化。當(dāng)然,并非所有基于窗口的應(yīng)用都要使用文檔/視圖結(jié)構(gòu),以下兩種情況不宜采用文檔/視圖結(jié)構(gòu):(1)不是面向數(shù)據(jù)的應(yīng)用或數(shù)據(jù)量很少的應(yīng)用,不宜采用文檔/視圖結(jié)構(gòu),如一些工具程序,包括磁盤掃描程序、過程控制程序等;(2)不使用標(biāo)準(zhǔn)的窗口用戶界面的程序,如一些游戲等。11.1.2單文檔界面(SDI)應(yīng)用程序圖11.2單文檔界
4、面程序——NotePad記事本程序11.1.3多文檔界面(MDI)應(yīng)用程序圖11.3多文檔界面程序——VisualC++6.011.2單文檔和多文檔界面應(yīng)用程序的實(shí)現(xiàn)11.2.1利用AppWizard創(chuàng)建單文檔界面應(yīng)用程序框架在前面實(shí)例中多次使用AppWizard創(chuàng)建單文檔界面應(yīng)用程序框架,其各向?qū)нx項(xiàng)采用的是默認(rèn)設(shè)置,本節(jié)將詳細(xì)介紹各向?qū)υ捒蛑羞x項(xiàng)的含義。1.AppWizard——第1步在【MFCAppWizard-Step1】對話框中(如圖11.4所示)可以選擇所創(chuàng)建的應(yīng)用程序類型,這里選擇“single
5、document”即單文檔應(yīng)用程序。2.AppWizard——第2步在第2步中,決定應(yīng)用程序是否支持和如何支持?jǐn)?shù)據(jù)庫,如圖11.5所示。圖11.4【MFCAppWizard-Step1】對話框圖11.5【MFCAppWizard-Step2】對話框3.AppWizard——第3步在第3步中決定應(yīng)用程序是否支持以及如何支持復(fù)合文檔,還可以選擇是否支持自動(dòng)化(Automation)和ActiveX控件,如圖11.6所示。采用默認(rèn)的選擇:不支持復(fù)合文檔和自動(dòng)化,支持ActiveX控件。圖11.6【MFCAppWiza
6、rd-Step3】對話框4.AppWizard——第4步在第4步中選擇應(yīng)用程序界面的特性,如圖11.7所示。圖11.7【MFCAppWizard-Step4】對話框圖11.8【BcumentTemplateStrings】選項(xiàng)卡圖11.9【W(wǎng)indowsstyles】選項(xiàng)卡5.AppWizard——第5步第5步?jīng)Q定AppWizard是否為自動(dòng)生成的代碼添加注釋,默認(rèn)選擇為自動(dòng)生成。另外,還決定如何使用MFC庫,如圖11.10所示。圖11.10【MFCAppWizard-Step3】對話框應(yīng)用程序可以有兩種方式使
7、用MFC庫:使用MFC動(dòng)態(tài)鏈接庫(AsasharedDLL)和使用MFC靜態(tài)鏈接庫(Asastaticlinkedlibrary)。默認(rèn)選擇為使用MFC動(dòng)態(tài)鏈接庫。6.AppWizard——第6步在第6步中可以指定AppWizard所生成的類的名稱、頭文件和實(shí)現(xiàn)文件名稱和類的基類,如圖11.11所示。圖11.11【MFCAppWizard-Step4】對話框圖11.12程序運(yùn)行結(jié)果11.2.2程序框架中的主要類及相互關(guān)系文檔/視圖結(jié)構(gòu)的應(yīng)用程序框架中,主要包含5個(gè)類:CWinApp類、CFrameWnd類、CV
8、iew類、CDocument類和CDocTemplate類。(1)CWinApp類為應(yīng)用程序類,它是應(yīng)用程序的起點(diǎn),負(fù)責(zé)應(yīng)用程序的啟動(dòng)。(2)CFrameWnd類為框架窗口類,它是應(yīng)用程序的框架窗口。所謂框架窗口,是指包括菜單、工具欄、狀態(tài)欄和窗口客戶區(qū)的整個(gè)應(yīng)用程序的主窗口。(3)CView類為視圖類,專門用來對應(yīng)用程序的數(shù)據(jù)進(jìn)行顯示。在視圖類中有一個(gè)很重要的函數(shù)OnDraw(),一