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