visual+c++6.0可視化編程2.ppt_第1頁(yè)
visual+c++6.0可視化編程2.ppt_第2頁(yè)
visual+c++6.0可視化編程2.ppt_第3頁(yè)
visual+c++6.0可視化編程2.ppt_第4頁(yè)
visual+c++6.0可視化編程2.ppt_第5頁(yè)
已閱讀5頁(yè),還剩55頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、,visuals C 6.0可視化編程,實(shí)例47 SDI應(yīng)用程序節(jié)目框架,設(shè)置SDI應(yīng)用程序節(jié)目的第一步-選擇單文檔,其他首選項(xiàng)。項(xiàng)目工作區(qū)類(lèi)視圖檔案視圖資源視圖檔案配置StdAfx.h和StdAfx.cpp包含在程序中預(yù)編譯的頭文件Resource.h中包含所有資源符號(hào)定義的標(biāo)準(zhǔn)頭文件。包含Program47.rc資源說(shuō)明信息的資源檔案(圖標(biāo)、位圖、光標(biāo)等)。Program47.rc2包含無(wú)法在集成開(kāi)發(fā)環(huán)境中直接編輯的資源program47.ico為應(yīng)用程序的圖標(biāo)文件。Program47.bmp是包含工具欄按鈕的位圖文件,可以在集成環(huán)境中編輯。Readme.txt是描述AppWizard創(chuàng)建

2、的原始文件的應(yīng)用程序節(jié)目描述文件,使用Developer Studio設(shè)置項(xiàng)目Developer Studio將創(chuàng)建很多中間文件。APS /支持ResourceViewBSC /關(guān)于瀏覽器檔案CLW /支持classwizardsp/項(xiàng)目檔案、刪除DSW /工作空間檔案和文本編輯器剪輯、MAK /外部生成檔案刪除和文本編輯器編輯nak應(yīng)用程序框架Windows應(yīng)用程序的建立都是在牙齒框架的基礎(chǔ)上展開(kāi)的。應(yīng)用程序體系結(jié)構(gòu)、基于框架窗口的應(yīng)用程序基于對(duì)話(huà)框的應(yīng)用程序基于文檔/視圖的應(yīng)用程序、與基于框架窗口的節(jié)目框架相關(guān)的MFC類(lèi)結(jié)構(gòu)、CCmdTarget類(lèi)和CCmdTarget是MFC消息映射結(jié)構(gòu)

3、的基類(lèi)。向消息映射應(yīng)用程序編寫(xiě)的處理指令或消息的響應(yīng)函數(shù)發(fā)送命令或消息。具有消息處理功能的類(lèi)必須是該類(lèi)的派生類(lèi)。CWinThread類(lèi)、Microsoft的類(lèi)庫(kù)支持多線(xiàn)程的并行執(zhí)行。每個(gè)應(yīng)用程序都有一個(gè)或多個(gè)線(xiàn)程(稱(chēng)為主線(xiàn)程)。CWinThread封裝操作系統(tǒng)調(diào)度功能。CWinApp類(lèi),CWinApp封裝Windows應(yīng)用程序節(jié)目初始化、執(zhí)行和退出應(yīng)用程序節(jié)目代碼?;诳蚣艿膽?yīng)用程序只能有一個(gè)派生自CWinApp的類(lèi)對(duì)象。CWnd類(lèi)、CWnd是各種窗口、對(duì)話(huà)框和控制框的通用基類(lèi),窗口處理提供了注冊(cè)公共窗口類(lèi)、創(chuàng)建和撤消窗口等處理操作。CFrameWnd類(lèi)提供了具有重疊或彈出功能的Windows

4、單文檔界面,并允許您通過(guò)成員函數(shù)對(duì)窗口執(zhí)行特定的控制操作?;诳蚣艽翱诘膽?yīng)用程序節(jié)目結(jié)構(gòu)類(lèi)關(guān)系、CWinApp應(yīng)用程序節(jié)目對(duì)象m_pMainWnd、CFrameWnd應(yīng)用程序節(jié)目框架窗口、節(jié)目執(zhí)行過(guò)程、應(yīng)用程序節(jié)目初始化實(shí)例創(chuàng)建窗口顯示窗口窗口消息循環(huán)結(jié)束應(yīng)用程序節(jié)目、WinMain函數(shù)和WinMain函數(shù)應(yīng)用程序門(mén)戶(hù)。用戶(hù)無(wú)需編寫(xiě)牙齒函數(shù)代碼,它們由應(yīng)用程序框架提供。主要完成注冊(cè)窗口類(lèi)和消息循環(huán)等標(biāo)準(zhǔn)服務(wù)。程序運(yùn)行時(shí),Windows會(huì)自動(dòng)執(zhí)行函數(shù)調(diào)用。CWinApp對(duì)象和CWinApp的派生類(lèi)對(duì)象定義為總數(shù)量。調(diào)用WinMain函數(shù)InitApplication和InitInstance成員

5、函數(shù)。注:InitInstance是必須復(fù)蓋的成員函數(shù)。InitInstance成員函數(shù),通常主要是應(yīng)用程序的主窗口對(duì)象,并更新和顯示主窗口。New ShowWindow UpdateWindow、Run和ExitInstance成員函數(shù),初始化后自動(dòng)調(diào)用WinMain牙齒Run。主要執(zhí)行消息循環(huán)。WinMain在退出應(yīng)用程序時(shí)調(diào)用ExitInstace成員函數(shù)。主邊框窗口CProgram47Frame類(lèi):牙齒類(lèi)中的對(duì)象表示應(yīng)用程序的主窗口。調(diào)用配置函數(shù)調(diào)用基類(lèi)CFrameWnd的Create函數(shù)以創(chuàng)建特定窗口結(jié)構(gòu)。(節(jié)目處理示例)CPROGRAM 47 Frame 33603360 OnLB

6、uttonDown函數(shù):消息處理機(jī)制,鼠標(biāo)鍵單擊牙齒事件時(shí),將映射到c program 47框架中的onl buttondown函數(shù),消息處理。視圖類(lèi)OnPaint()在屏幕上需要輸出類(lèi)窗口時(shí)調(diào)用,并完成窗口的屏幕輸出顯示操作。OnPrint()在打印一頁(yè)時(shí)調(diào)用,以在一頁(yè)上完成紙張打印。兩個(gè)函數(shù)的基本實(shí)現(xiàn)都包括對(duì)OnDraw(CDC *pDC)的調(diào)用。節(jié)目執(zhí)行進(jìn)程分析、CProgram47App類(lèi):CProgram47App類(lèi)中的對(duì)象表示應(yīng)用程序,CWinApp基類(lèi)確定大多數(shù)行為。c pro gram 47 app theApp;全局對(duì)象,在節(jié)目開(kāi)始運(yùn)行時(shí)調(diào)用CProgram47App類(lèi)的構(gòu)造

7、函數(shù)函數(shù)的生成。WinMain函數(shù):不是不存在,而是隱藏在應(yīng)用程序節(jié)目框架內(nèi)部。啟動(dòng)應(yīng)用程序節(jié)目:開(kāi)始運(yùn)行應(yīng)用程序節(jié)目時(shí),WINDOWS調(diào)用WinMain函數(shù),WinMain查找該應(yīng)用程序的全局對(duì)象theApp。c program 47 app 3360: InitInstance成員函數(shù):theApp發(fā)現(xiàn)后,自動(dòng)調(diào)用重載虛擬函數(shù)InitInstance,以完成主窗口的配置和顯示任務(wù)。記住牙齒函數(shù)。CWinApp:Run成員函數(shù):在調(diào)用InitInstance后,WinMain立即調(diào)用Run函數(shù)?;?lèi)負(fù)責(zé)將應(yīng)用程序節(jié)目消息傳遞到相應(yīng)窗口。(您已完成windows API中函數(shù)GetMessag

8、e()、TranslateMessage()和DispatchMessage()的功能。)OnIdle()在Run()的空閑時(shí)間運(yùn)行。收到OnIdle()牙齒消息后,將其傳遞給Run()進(jìn)行處理。ExitInstance()用于在節(jié)目執(zhí)行實(shí)例關(guān)閉時(shí)清理和釋放相關(guān)資源。關(guān)閉應(yīng)用程序:當(dāng)用戶(hù)關(guān)閉應(yīng)用程序時(shí),發(fā)生一系列事件。首先刪除CProgram47Frame對(duì)象,然后退出Run以退出WinMain并刪除CProgram47App對(duì)象。節(jié)目死亡:用戶(hù)單擊File/Close,因此運(yùn)行WM-CLOSE CMainWindow時(shí)未設(shè)置WM-CLOSE處理程序,因此已移交給默認(rèn)處理程序。默認(rèn)函數(shù)WM-C

9、LOSE的處理方法是調(diào)用:destre,因此發(fā)送WM-DESTROY的默認(rèn)WM-DESTROY處理方法是調(diào)用:PostQuitMessage以調(diào)用WM-WM-QUIT。如果收到cwinapp 33603: run牙齒WM-QUIT,內(nèi)部消息循環(huán)將終止;如果CMyWinApp復(fù)蓋ExitInstance,則cwinapp 3360: run將調(diào)用cmy winapp:ExitInstance;否則,將終止cmy winapp 3360: runMFC類(lèi)庫(kù)是C類(lèi)庫(kù)。這些類(lèi)封裝Win32應(yīng)用程序節(jié)目編程介面、應(yīng)用程序的概念、OLE特性以及封裝ODBC和DAO數(shù)據(jù)訪(fǎng)問(wèn)的功能,如下所示:(1) Win3

10、2應(yīng)用程序節(jié)目編程接口的封裝將Windows Object打包到C Object中。例如:CWnd是C window對(duì)象,它將Windows window(HWND)和Windows window相關(guān)API函數(shù)封裝在C window對(duì)象的成員函數(shù)中。c window object的成員變量m_hWnd是前者的窗口句柄,(2)在應(yīng)用程序節(jié)目概念封裝中使用SDK構(gòu)建Windows應(yīng)用程序時(shí),始終定義窗口進(jìn)程、注冊(cè)Windows類(lèi)、創(chuàng)建窗口等。兩部分都有相當(dāng)?shù)某潭?,沒(méi)有變性。MFC是將具有相當(dāng)固定行為的WinMain內(nèi)部操作封裝在CWinApp中。將具有相當(dāng)固定行為的WndProc內(nèi)部操作封裝到CF

11、rameWnd中。也就是說(shuō),CWinApp表示W(wǎng)indows應(yīng)用程序節(jié)目主體,CFrameWnd表示大型機(jī)窗口。MFC封裝許多其他類(lèi)似的處理,并代替程序員執(zhí)行這些任務(wù)。MFC還提出了以文檔-視圖為中心的編程模型,MFC類(lèi)庫(kù)封裝了對(duì)此的支持。文檔是您正在處理的數(shù)據(jù)對(duì)象,而視圖是數(shù)據(jù)任務(wù)的窗口,您可以在其中處理和查看數(shù)據(jù)。(3)封裝了COM/OLE特性的OLE基于COM模型,支持OLE的應(yīng)用程序需要實(shí)施一系列介面,因此是一項(xiàng)繁瑣的任務(wù)。MFC的OLE類(lèi)封裝了OLE API中的復(fù)雜任務(wù),該任務(wù)提供了用于實(shí)現(xiàn)OLE的高級(jí)接口。(4) ODBC功能的封裝使用提供與ODBC高級(jí)接口的少量C類(lèi)封裝ODBC

12、API的復(fù)雜任務(wù),從而提供數(shù)據(jù)庫(kù)編程模型。2 .繼承首先,MFC抽象了許多類(lèi)的公共特性,并將某些基類(lèi)設(shè)計(jì)為實(shí)現(xiàn)其他類(lèi)的基礎(chǔ)。這些類(lèi)中最重要的類(lèi)是CObject和CmdTarget。CObject是MFC的根類(lèi),大多數(shù)MFC類(lèi)派生自MFC。包含Ccmd目標(biāo)。CObject實(shí)現(xiàn)了一些茄子重要功能,如動(dòng)態(tài)類(lèi)信息、動(dòng)態(tài)生成、對(duì)象序列化和節(jié)目調(diào)試支持。從CObject派生的任何類(lèi)都可以具有CObject所擁有的屬性。CCmdTarget封裝某些屬性和方法,以提供消息處理體系結(jié)構(gòu)。MFC可以處理消息的所有類(lèi)都派生自CCMD目標(biāo)。MFC設(shè)計(jì)了一組用于封裝每個(gè)單獨(dú)對(duì)象的類(lèi)。每個(gè)類(lèi)集都有一個(gè)基類(lèi),該基類(lèi)派生了許

13、多更具體的類(lèi)。這些對(duì)象是窗口對(duì)象,基類(lèi)是CWnd是。基類(lèi)為CWinThread的應(yīng)用程序節(jié)目對(duì)象文檔對(duì)象,基類(lèi)是CDocument等。3 .虛擬函數(shù)和動(dòng)態(tài)約束MFC自然支持基于“C”的虛擬函數(shù)和動(dòng)態(tài)約束。但是,作為編程框架,存在需要解決的問(wèn)題。如果僅通過(guò)虛擬函數(shù)支持動(dòng)態(tài)約束,虛擬函數(shù)表將膨脹得太厲害,消耗內(nèi)存,效率低下。例如,當(dāng)CWnd封裝Windows窗口對(duì)象時(shí),每個(gè)Windows消息都對(duì)應(yīng)于由派生類(lèi)函數(shù)繼承的成員函數(shù)。如果牙齒函數(shù)都設(shè)計(jì)成虛擬函數(shù),那么實(shí)現(xiàn)是不現(xiàn)實(shí)的,因?yàn)閿?shù)量太多了。因此,MFC構(gòu)建了消息映射機(jī)制,以高效、易用的方法解決與消息處理函數(shù)的動(dòng)態(tài)約束問(wèn)題。因此,MFC類(lèi)通過(guò)虛擬函

14、數(shù)和消息映射提供了豐富的編程接口。MFC的編程框架,包括在程序員繼承基類(lèi)的同時(shí)實(shí)現(xiàn)的虛擬函數(shù)和消息處理函數(shù)。MFC編程框架在適當(dāng)?shù)臅r(shí)候調(diào)用節(jié)目代碼。4 .MFC的宏框架系統(tǒng)如上所述,MFC封裝應(yīng)用節(jié)目概念,封裝類(lèi)、類(lèi)繼承、動(dòng)態(tài)約束、類(lèi)關(guān)系和交互等。這樣封裝的結(jié)果對(duì)程序員來(lái)說(shuō)是一組開(kāi)發(fā)模板(或模式)。程序員根據(jù)應(yīng)用節(jié)目和目的使用不同的模板。例如,SDI應(yīng)用程序中的模板、MDI應(yīng)用程序中的模板、規(guī)則DLL應(yīng)用程序中的模板、擴(kuò)展DLL應(yīng)用程序的模板、OLE/ACTIVEX應(yīng)用程序中的模板等。這些模板使用文檔驅(qū)動(dòng)的思想,每個(gè)都包含一組特定的類(lèi)。典型MDI應(yīng)用程序的配置將在以下部分中詳細(xì)介紹:要支持應(yīng)用

15、程序節(jié)目概念的封裝,需要在MFC內(nèi)部執(zhí)行很多任務(wù)。例如,要實(shí)現(xiàn)消息映射機(jī)制,MFC編程框架必須首先接收消息,然后以設(shè)置的方式處理。另一個(gè)示例是,為了支持DLL編程和多線(xiàn)程編程,MFC內(nèi)部使用了特殊的處理方法,以使用模塊狀態(tài)、線(xiàn)程狀態(tài)等管理重要信息。這種內(nèi)部處理在程序員方面是透明的,但了解和了解MFC內(nèi)部機(jī)制有助于編寫(xiě)靈活而強(qiáng)大的程序??蚣苁褂孟D像機(jī)制將發(fā)送到對(duì)象的消息映射到類(lèi)方法,以便相應(yīng)的窗口或控件可以自動(dòng)處理消息。兩個(gè)。MFC的消息處理機(jī)制,實(shí)施消息映射,說(shuō)明:在處理消息的窗口類(lèi)中描述消息響應(yīng)函數(shù):實(shí)施消息響應(yīng)函數(shù)原型DECLARE_MESSAGE_MAP():實(shí)現(xiàn)程序中的消息映射BEGIN_MESSAGE_MAP說(shuō)明消息映射條目和處理方法cwin app)/afx _ msg _ map(c program 47 app)on _ commanant用

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論