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

下載本文檔

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

文檔簡介

1、,visuals C 6.0可視化編程,實例47 SDI應(yīng)用程序節(jié)目框架,設(shè)置SDI應(yīng)用程序節(jié)目的第一步-選擇單文檔,其他首選項。項目工作區(qū)類視圖檔案視圖資源視圖檔案配置StdAfx.h和StdAfx.cpp包含在程序中預(yù)編譯的頭文件Resource.h中包含所有資源符號定義的標(biāo)準(zhǔn)頭文件。包含Program47.rc資源說明信息的資源檔案(圖標(biāo)、位圖、光標(biāo)等)。Program47.rc2包含無法在集成開發(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è)置項目Developer Studio將創(chuàng)建很多中間文件。APS /支持ResourceViewBSC /關(guān)于瀏覽器檔案CLW /支持classwizardsp/項目檔案、刪除DSW /工作空間檔案和文本編輯器剪輯、MAK /外部生成檔案刪除和文本編輯器編輯nak應(yīng)用程序框架Windows應(yīng)用程序的建立都是在牙齒框架的基礎(chǔ)上展開的。應(yīng)用程序體系結(jié)構(gòu)、基于框架窗口的應(yīng)用程序基于對話框的應(yīng)用程序基于文檔/視圖的應(yīng)用程序、與基于框架窗口的節(jié)目框架相關(guān)的MFC類結(jié)構(gòu)、CCmdTarget類和CCmdTarget是MFC消息映射結(jié)構(gòu)

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

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

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

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

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

8、e()、TranslateMessage()和DispatchMessage()的功能。)OnIdle()在Run()的空閑時間運行。收到OnIdle()牙齒消息后,將其傳遞給Run()進(jìn)行處理。ExitInstance()用于在節(jié)目執(zhí)行實例關(guān)閉時清理和釋放相關(guān)資源。關(guān)閉應(yīng)用程序:當(dāng)用戶關(guān)閉應(yīng)用程序時,發(fā)生一系列事件。首先刪除CProgram47Frame對象,然后退出Run以退出WinMain并刪除CProgram47App對象。節(jié)目死亡:用戶單擊File/Close,因此運行WM-CLOSE CMainWindow時未設(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類庫是C類庫。這些類封裝Win32應(yīng)用程序節(jié)目編程介面、應(yīng)用程序的概念、OLE特性以及封裝ODBC和DAO數(shù)據(jù)訪問的功能,如下所示:(1) Win3

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論