C程序設(shè)計(jì)語(yǔ)言揣錦華第11章VisualC環(huán)境下Windows.ppt
《C程序設(shè)計(jì)語(yǔ)言揣錦華第11章VisualC環(huán)境下Windows.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《C程序設(shè)計(jì)語(yǔ)言揣錦華第11章VisualC環(huán)境下Windows.ppt(26頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
Windows程序要處理的消息種類如下:①Windows消息。該類消息以WM_開頭(WM_COMMAND例外),通常由窗口和視圖來(lái)處理。這些消息常常帶有參數(shù),用于決定處理該消息的方式。②由控件和其它子窗口發(fā)送給父窗口的WM_COMMAND消息。這些消息中包括EN_CHANGE通知碼。如當(dāng)用戶在編輯框中鍵入文本或進(jìn)行修改時(shí),就會(huì)向系統(tǒng)發(fā)送一個(gè)帶EN_CHANGE通知碼的WM_COMMAND消息。③來(lái)自于用戶界面對(duì)象的WM_COMMAND消息。這些用戶界面對(duì)象包括菜單、工具欄按鈕和快捷鍵。,11.3MFC基礎(chǔ),11.3.1MFC類庫(kù)簡(jiǎn)介類庫(kù)是一個(gè)可以在應(yīng)用程序中使用的相互關(guān)聯(lián)的C++類的集合。與一般類庫(kù)不同,MFC是一個(gè)Windows應(yīng)用程序框架,它定義了應(yīng)用程序的結(jié)構(gòu)并實(shí)現(xiàn)了標(biāo)準(zhǔn)的用戶接口。MFC提供了管理窗口、菜單、對(duì)話框的代碼,可實(shí)現(xiàn)基本的輸入/輸出和數(shù)據(jù)存儲(chǔ)。MFC為我們提供了大量可重用代碼,隱藏了程序設(shè)計(jì)中的許多復(fù)雜工作,這也是面向?qū)ο蠓椒ǖ牡湫腕w現(xiàn)。,MFC的類可分為兩種:從CObject派生的類以及非派生類。本小節(jié)按功能組對(duì)MFC庫(kù)中的常用類做一簡(jiǎn)要介紹。1.根類CobjectMicrosoft基本類庫(kù)中的大多數(shù)類都是由CObject類派生而來(lái)的。CObject對(duì)所有由它派生出的類提供了有用的基本服務(wù)。,2.MFC應(yīng)用結(jié)構(gòu)類MFC應(yīng)用結(jié)構(gòu)類用于構(gòu)造一個(gè)應(yīng)用的框架。它們對(duì)大多數(shù)應(yīng)用提供了通用功能。我們可以在框架中填寫對(duì)于應(yīng)用的特定的功能。AppWizard可以產(chǎn)生幾種類型的應(yīng)用,所有這些都以不同的方式使用應(yīng)用框架。1)應(yīng)用程序和線程支持類每一個(gè)應(yīng)用都有一個(gè)也只有一個(gè)應(yīng)用對(duì)象,這個(gè)對(duì)象派生自CWinApp。Microsoft基本類庫(kù)支持在一個(gè)應(yīng)用中有多個(gè)執(zhí)行線程。所有的應(yīng)用都必須至少有一個(gè)線程。CWinApp對(duì)象使用的線程叫做“主”線程。CWinThread封裝了一部分操作系統(tǒng)的線程功能。,2)命令例程類當(dāng)使用鼠標(biāo)選擇菜單或控制條按鈕,并與應(yīng)用程序交互時(shí),應(yīng)用程序把消息從受影響的界面對(duì)象發(fā)至合適的命令目標(biāo)對(duì)象。命令目標(biāo)對(duì)象從CCmdTarget派生出來(lái),包括CWinApp、CWnd、CDocTemplate、CDocument、CView和它們的派生類。框架支持自動(dòng)命令例程,這樣,命令可被應(yīng)用程序中活動(dòng)的大多數(shù)相應(yīng)的對(duì)象處理。,3)文檔類文檔類對(duì)象管理應(yīng)用程序的數(shù)據(jù)并與視圖類對(duì)象交互。視圖對(duì)象表示窗口的客戶區(qū)并顯示文檔的數(shù)據(jù),允許用戶與之交互。文檔和視圖都是由文檔模板對(duì)象產(chǎn)生的。,4)文檔模板類當(dāng)創(chuàng)建一個(gè)新文檔/視圖時(shí),文檔模板對(duì)象一并創(chuàng)建文檔、視圖和框架窗口對(duì)象。3.窗口、對(duì)話框和控件類1)CWnd類CWnd類是所有窗口的基類。程序中可以使用MFC中的CWnd派生類,也可以從其中派生出自己的類。,2)框架窗口類CFrameWnd是SDI應(yīng)用程序主框架窗口的基類??蚣艽翱谕ǔ0渌翱?,如視圖、工具條和狀態(tài)條。3)對(duì)話框類類CDialog和它的派生類封裝了對(duì)話框功能。由于對(duì)話框是一種特殊的窗口,所以CDialog是從CWnd派生的。CDialog又是所有對(duì)話框的基類。,4)視圖類CView是視圖類的基類。CView及其派生類是一些子窗口,表示框架窗口的客戶區(qū)。視圖顯示數(shù)據(jù),并接收文檔的輸入,以便編輯或選擇數(shù)據(jù)。5)控件類控件類封裝了各式各樣的標(biāo)準(zhǔn)Windows控件,從靜態(tài)文字控件到樹形控件。另外,MFC提供了一些新控件,包括帶位圖和控制條的按鈕。,6)控件條類控件條附加在一個(gè)框架窗口中。它們包含按鈕、狀態(tài)面板或一個(gè)對(duì)話模板。自由浮動(dòng)控件還可以調(diào)用工具調(diào)色板,這是通過(guò)把它們附加在CMiniFrameWnd對(duì)象上實(shí)現(xiàn)的。,4.菜單類類CMenu直接從CObject派生出來(lái),封裝了Windows中菜單的數(shù)據(jù)結(jié)構(gòu),它提供一個(gè)界面,通過(guò)它可訪問(wèn)應(yīng)用程序的菜單。5.繪圖和打印類在Windows中,所有的圖形輸出都在一個(gè)可視的繪圖區(qū)上,這叫做一個(gè)設(shè)備上下文(或DC),所有對(duì)繪圖的調(diào)用都是通過(guò)一個(gè)設(shè)備上下文對(duì)象完成的。,6.簡(jiǎn)單的數(shù)據(jù)類型類這些類封裝了繪圖坐標(biāo)、字符串、時(shí)間和數(shù)據(jù)信息。7.?dāng)?shù)組、列表和映射類數(shù)組是一維數(shù)據(jù)結(jié)構(gòu),它們?cè)趦?nèi)存中是連續(xù)存儲(chǔ)的。因?yàn)閿?shù)組中任何一個(gè)給定元素的內(nèi)存地址可以通過(guò)將元素的下標(biāo)乘以一個(gè)元素的大小再加上數(shù)組的基地址而得到,所以數(shù)組支持非??斓碾S機(jī)訪問(wèn)。,8.文件和數(shù)據(jù)庫(kù)類這些類允許將信息存儲(chǔ)在一個(gè)數(shù)據(jù)庫(kù)或一個(gè)磁盤文件中。有兩個(gè)數(shù)據(jù)庫(kù)類的集合——DAO和ODBC,它們提供了相似的功能。DAO組使用數(shù)據(jù)訪問(wèn)對(duì)象實(shí)現(xiàn),ODBC組使用開放式數(shù)據(jù)庫(kù)對(duì)象實(shí)現(xiàn)。還有用于操作標(biāo)準(zhǔn)文件、Active流和HTML流的類的集合。1)文件I/O類這些類對(duì)傳統(tǒng)磁盤文件、內(nèi)存文件、Active流和Windows套接字提供了一個(gè)接口。,2)DAO類這些類與其它應(yīng)用框架一起工作,可以使對(duì)DAO(數(shù)據(jù)訪問(wèn)對(duì)象)數(shù)據(jù)庫(kù)的訪問(wèn)更簡(jiǎn)便。DAO類使用的數(shù)據(jù)庫(kù)引擎與MicrosoftVisualBasic和MicrosoftAccess相同。DAO類還能訪問(wèn)許多支持開放數(shù)據(jù)庫(kù)鏈接(ODBC)驅(qū)動(dòng)程序的數(shù)據(jù)庫(kù)。3)ODBC類這些類和其它應(yīng)用框架一起工作,可以使得對(duì)許多支持開放數(shù)據(jù)庫(kù)鏈接(ODBC)的數(shù)據(jù)庫(kù)的訪問(wèn)更簡(jiǎn)便。,9.Internet和網(wǎng)絡(luò)類這些類允許和其它使用ISAPI的計(jì)算機(jī)或一個(gè)WindowsSocket交換信息。Internet和網(wǎng)絡(luò)類還有創(chuàng)建ISAPI擴(kuò)展DLL的類的集合和操作Windows套接字的類的集合。10.OLE類OLE類與其它應(yīng)用框架一起工作,可以使對(duì)ActiveX的訪問(wèn)更方便,可以使程序更容易地提供ActiveX的功能。,11.調(diào)試和異常類這些類提供對(duì)調(diào)試動(dòng)態(tài)內(nèi)存分配的支持,并且支持將異常信息從產(chǎn)生異常的函數(shù)傳遞給捕獲異常的函數(shù)。,11.3.2MFC應(yīng)用程序框架應(yīng)用程序框架包含用于生成應(yīng)用程序所必須的各種面向?qū)ο蠼M件的集合。在VisualC++中,MFCAppWizard能方便地生成應(yīng)用程序框架,用戶可以在此基礎(chǔ)上進(jìn)行進(jìn)一步的編程工作。MFCAppWizard生成的應(yīng)用程序包括以下要素。①WinMain函數(shù)。Windows要求應(yīng)用程序必須有一個(gè)WinMain函數(shù)。但在我們的程序中看不到WinMain,因?yàn)樗[藏在應(yīng)用程序框架中。,②應(yīng)用程序類CmyFirstApp。該類的每一個(gè)對(duì)象代表一個(gè)應(yīng)用程序。程序中默認(rèn)定義一個(gè)全局CMyFirstApp對(duì)象,即theApp。CWinApp基類決定theApp的大多數(shù)行為。③應(yīng)用程序啟動(dòng)。啟動(dòng)應(yīng)用程序時(shí),Windows調(diào)用應(yīng)用程序框架內(nèi)置的WinMain函數(shù),WinMain尋找由CWinApp派生出的全局構(gòu)造的應(yīng)用程序?qū)ο?。在C++程序中,全局對(duì)象在主程序執(zhí)行之前構(gòu)造。,④成員函數(shù)CmyFirstApp::InitInstance。當(dāng)WinMain函數(shù)找到應(yīng)用程序?qū)ο髸r(shí),它調(diào)用偽成員函數(shù)InitInstance,這個(gè)成員函數(shù)調(diào)用所需的構(gòu)造并顯示應(yīng)用程序的主框架窗口。必須在派生的應(yīng)用程序類中重載InitInstance,因?yàn)镃WinApp基類不知道需要什么樣的主框架窗口。⑤成員函數(shù)CwinApp::Run。函數(shù)Run隱藏在基類中,但是它發(fā)送應(yīng)用程序的消息到窗口,以保持應(yīng)用程序的正常運(yùn)行。在WinMain調(diào)用InitInstance之后,便調(diào)用Run。,⑥CMainFrame類。CMainFrame類的對(duì)象代表應(yīng)用程序的主框架窗口。當(dāng)構(gòu)造函數(shù)調(diào)用基類CMainFrame的成員函數(shù)Create時(shí),Windows創(chuàng)建實(shí)際窗口結(jié)構(gòu),應(yīng)用程序框架把它連接到C++對(duì)象。函數(shù)ShowWindows和UpdateWindow也是基類的成員函數(shù),必須調(diào)用它們來(lái)顯示窗口。,⑦文檔與視圖類。MFC通過(guò)“文檔-視圖”的結(jié)構(gòu)為應(yīng)用程序提供一種將數(shù)據(jù)與視圖相分離的存儲(chǔ)方式。文檔類的作用是將應(yīng)用程序的數(shù)據(jù)保存在文檔類對(duì)象中,以及從磁盤文件中讀或向磁盤文件中寫數(shù)據(jù)。視圖類的作用是顯示數(shù)據(jù)和編輯數(shù)據(jù)。在文檔、視圖以及應(yīng)用程序框架的其余部分之間存在著非常復(fù)雜的相互作用過(guò)程。一個(gè)文檔至少應(yīng)該有一個(gè)與之對(duì)應(yīng)的視圖。很多情況下,一個(gè)文檔有多個(gè)視圖與之對(duì)應(yīng)。,⑧關(guān)閉應(yīng)用程序。如果用戶通過(guò)關(guān)閉主框架窗口來(lái)關(guān)閉應(yīng)用程序,這個(gè)操作就將激發(fā)一系列事件的發(fā)生,包括CMainFrame對(duì)象的析構(gòu)、從Run中退出、從WinMain中退出和CMyFirstApp對(duì)象的析構(gòu)。,11.4使用VisualC++開發(fā)Windows程序?qū)嵗?為了使讀者對(duì)Windows程序開發(fā)方法有一個(gè)初步印象,下面我們給出一個(gè)完整的使用VisualC++開發(fā)Windows程序的實(shí)例。用MFC向?qū)?chuàng)建如圖11-3所示的編輯框,在編輯框中實(shí)現(xiàn)算術(shù)加、減、乘和除的運(yùn)算。,圖11-3可實(shí)現(xiàn)算術(shù)加、減、乘和除的運(yùn)算的界面,1.利用MFC向?qū)Ы⒊绦蚩蚣?1)在進(jìn)入VisualC++6.0的第一個(gè)界面下,選擇MFCAppwizard(exe),并設(shè)置工程名及其所在位置,如圖11-4所示。,- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 程序設(shè)計(jì)語(yǔ)言 揣錦華第 11 VisualC 環(huán)境 Windows
鏈接地址:http://www.820124.com/p-11495276.html