Visual C++程序設(shè)計(jì)教程(第二版)課件:構(gòu)造應(yīng)用程序框架_第1頁(yè)
Visual C++程序設(shè)計(jì)教程(第二版)課件:構(gòu)造應(yīng)用程序框架_第2頁(yè)
Visual C++程序設(shè)計(jì)教程(第二版)課件:構(gòu)造應(yīng)用程序框架_第3頁(yè)
Visual C++程序設(shè)計(jì)教程(第二版)課件:構(gòu)造應(yīng)用程序框架_第4頁(yè)
Visual C++程序設(shè)計(jì)教程(第二版)課件:構(gòu)造應(yīng)用程序框架_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

構(gòu)造應(yīng)用程序框架

3.1單文檔應(yīng)用框架

所謂的單文檔(SDI)界面應(yīng)用程序,是指在應(yīng)用程序中一次只能打開一個(gè)文件處理。打開下一個(gè)文件之前,必須先關(guān)閉上一個(gè)打開的文件,才能執(zhí)行下一個(gè)打開操作。對(duì)于涉及文檔較少的程序,只容許處理單個(gè)文檔的程序或執(zhí)行其它功能。2024/11/11VisualC++程序設(shè)計(jì)教程-2創(chuàng)建過程

創(chuàng)建工程。按照前一章創(chuàng)建工程的步驟創(chuàng)建一個(gè)工程,類型為SDI,工程名為Eg3_1,其他選項(xiàng)取默認(rèn)值。單擊“OK”按鈕,AppWizard就開始創(chuàng)建應(yīng)用的子目錄、文件和類。添加自己的代碼:

2024/11/11VisualC++程序設(shè)計(jì)教程-3創(chuàng)建過程(續(xù))擴(kuò)充Eg3_1View.cpp中的OnDraw成員函數(shù):voidCEg3_1View::OnDraw(CDC*pDC){ CEg3_1Doc*pDoc=GetDocument(); ASSERT_VALID(pDoc); //TODO:adddrawcodefornativedatahere

pDC->TextOut(60,100,"Hello,WelcometoVisualC++6.0!");}

2024/11/11VisualC++程序設(shè)計(jì)教程-4創(chuàng)建過程(續(xù))更改應(yīng)用程序的標(biāo)題:選擇工作區(qū)中ResourceVies標(biāo)簽,展開Eg3_1Resources|StringTable,雙擊StringTable,彈出字符串資源表。雙擊IDR_MAINFRAME項(xiàng),彈出StringProperties對(duì)話框。在Caption編輯框中將標(biāo)題修改為“單文檔應(yīng)用程序\nEg3_1”。編譯、鏈接并運(yùn)行。

2024/11/11VisualC++程序設(shè)計(jì)教程-5CEg3_1App應(yīng)用程序運(yùn)行過程

CWinApp類創(chuàng)建的實(shí)例theApp,整個(gè)程序有且只有一個(gè),一切由它開始,最后以它結(jié)束。VisualC++所產(chǎn)生的代碼首先通過初始化數(shù)據(jù)段來建立全局變量,以及建立一些MFC內(nèi)部使用的對(duì)象,然后執(zhí)行CWinApp類的構(gòu)造函數(shù)。

2024/11/11VisualC++程序設(shè)計(jì)教程-6CEg3_1App應(yīng)用程序運(yùn)行過程(續(xù))一旦所有靜態(tài)對(duì)象的構(gòu)造函數(shù)都執(zhí)行完畢,運(yùn)行時(shí)間庫(kù)就會(huì)調(diào)用WinMain()函數(shù),該函數(shù)初始化MFC應(yīng)用,并調(diào)用CWinApp類的InitInstance()函數(shù)。完成了這些工作后,WinMain()函數(shù)調(diào)用CWinApp類的Run()函數(shù),通常默認(rèn)為CWinThread::Run(),用來得到應(yīng)用程序的消息循環(huán),或稱消息隊(duì)列。

2024/11/11VisualC++程序設(shè)計(jì)教程-7CEg3_1App應(yīng)用程序運(yùn)行過程(續(xù))當(dāng)程序接收到WM_QUIT消息,就意味著程序終止。這時(shí),MFC會(huì)調(diào)用CWinApp類的ExitInstance(),然后是靜態(tài)對(duì)象的析構(gòu)函數(shù),包括CWinApp對(duì)象,然后將控制權(quán)交還操作系統(tǒng)。

2024/11/11VisualC++程序設(shè)計(jì)教程-83.2多文檔應(yīng)用框架

多文檔(MDI)接口應(yīng)用程序是指一個(gè)應(yīng)用程序可以同時(shí)打開多個(gè)文件進(jìn)行處理。

MDI是大多數(shù)應(yīng)用程序采用的形式。Microsoft公司的Word應(yīng)用軟件就是一個(gè)典型的多文檔應(yīng)用。

2024/11/11VisualC++程序設(shè)計(jì)教程-9單文檔應(yīng)用程序和多文檔應(yīng)用程序的比較

在MDI程序中許多程序的細(xì)節(jié)是與SDI程序是相同的。在MDI程序中使用了CMultiDocTemplate模板,以便程序能夠處理多個(gè)文檔,同時(shí)也將視圖和文檔類連接到該模板及CChildFrame類,CChildFrame類支持出現(xiàn)在主窗口內(nèi)部的MDI子窗口。

2024/11/11VisualC++程序設(shè)計(jì)教程-103.3基于對(duì)話框的應(yīng)用框架

基于對(duì)話框的應(yīng)用程序,是以對(duì)話框?yàn)樾问降膽?yīng)用程序,它對(duì)于那些涉及文檔較少,主要是交互式操作的應(yīng)用程序來說比較合適。 基于對(duì)話框的應(yīng)用框架和前面介紹的基于文檔的應(yīng)用框架有很大的區(qū)別。

2024/11/11VisualC++程序設(shè)計(jì)教程-11創(chuàng)建過程

在AppWizard的第一步,即MFCAppWizard--Step1中,選中“Dialogbased”單選框按鈕。在第四步,AppWizard會(huì)顯示出它將幫助用戶創(chuàng)建的類及屬性。在這個(gè)基于對(duì)話框的應(yīng)用中只有兩個(gè)類被創(chuàng)建。一個(gè)是應(yīng)用類CEg3_3App,另一個(gè)是對(duì)話框類CEg3_3Dlg。

2024/11/11VisualC++程序設(shè)計(jì)教程-12創(chuàng)建過程(續(xù))修改對(duì)話框資源: 在Textproperties對(duì)話框中,將Caption框中的“TODO:在這里設(shè)置對(duì)話控制。”刪除,改成為“Hello,WelcometoVisualC++!”。編譯、鏈接、運(yùn)行。

注意:基于對(duì)話框的應(yīng)用框架和基于文檔的應(yīng)用框架的區(qū)別在于實(shí)現(xiàn)對(duì)話框的第一步是創(chuàng)建一個(gè)對(duì)話框?qū)ο骴lg,然后通過調(diào)用對(duì)話類的成員函數(shù)DoModal()來顯示對(duì)話框。2024/11/11VisualC++程序設(shè)計(jì)教程-133.4程序運(yùn)行流程分析

Windows的編程模式:

Windows程序運(yùn)行總是由WinMain()函數(shù)開始,該函數(shù)主要是建立應(yīng)用程序的主窗口。Windows程序通過操作系統(tǒng)發(fā)送的消息來處理用戶輸入,程序的主窗口中需要包含處理Windows所發(fā)送消息的代碼。

2024/11/11VisualC++程序設(shè)計(jì)教程-14MFC應(yīng)用程序的運(yùn)行過程

2024/11/11VisualC++程序設(shè)計(jì)教程-15MFC應(yīng)用程序的運(yùn)行過程(續(xù))MFC的應(yīng)用程序運(yùn)行過程如下:1.應(yīng)用程序定義一個(gè)應(yīng)用類全局對(duì)象。2.應(yīng)用類對(duì)象的構(gòu)造函數(shù)開始執(zhí)行。3.構(gòu)造函數(shù)執(zhí)行完后,調(diào)用初始化函數(shù)InitInstance()。4.在函數(shù)InitInstance()中,構(gòu)造文檔模板。5.構(gòu)造文檔模板時(shí),按照生成一個(gè)文檔的順序先產(chǎn)生一個(gè)最初的文檔、視主框架。6.函數(shù)InitInstance()生成工具條和狀態(tài)條,以及其它用戶需要的工具。

7.函數(shù)InitInstance()執(zhí)行完成后,應(yīng)用程序處于等待消息的狀態(tài)。

2024/11/11VisualC++程序設(shè)計(jì)教程-16三種應(yīng)用程序框架的異同

相同:每個(gè)應(yīng)用程序的應(yīng)用類都會(huì)自動(dòng)創(chuàng)建一個(gè)InitInstance()函數(shù)

相異:?jiǎn)挝臋n應(yīng)用程序中,應(yīng)用類的對(duì)象由應(yīng)用框架構(gòu)造,使用單文檔模板類CSingleDocTemplate的對(duì)象來構(gòu)造文檔模板。

2024/11/11VisualC++程序設(shè)計(jì)教程-17三種應(yīng)用程序框架的異同(續(xù))MDI應(yīng)用程序中,應(yīng)用類的對(duì)象同樣也由應(yīng)用框架構(gòu)造,使用多文檔模板類CMulitDocTemplate對(duì)象來構(gòu)造文檔模板?;趯?duì)話框的應(yīng)用程序中,首先在函數(shù)中生成一個(gè)對(duì)話框?qū)ο?,然后再通過DoModal()函數(shù)來調(diào)用和

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論