第七章 Visual C++編程基礎(chǔ).ppt_第1頁
第七章 Visual C++編程基礎(chǔ).ppt_第2頁
第七章 Visual C++編程基礎(chǔ).ppt_第3頁
第七章 Visual C++編程基礎(chǔ).ppt_第4頁
第七章 Visual C++編程基礎(chǔ).ppt_第5頁
已閱讀5頁,還剩92頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,1,主講教師: * 個人主頁:*,高級語言程序設(shè)計II,四川大學(xué)計算機(jī)學(xué)院,四川大學(xué)計算機(jī)學(xué)院,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,2,教材:C+面向?qū)ο蟪绦蛟O(shè)計,李濤 主編 游洪躍 陳良銀 李琳等編 高等教育出版社 2006年2月出版,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,3,本書內(nèi)容,第1章 緒論 第2章 C+類和對象 第3章 繼承 第4章 多態(tài)性 第5章 模板 第6章 C+常見問題 第7章 Visual C+編程基礎(chǔ) 第8章 對話框、常用消息、菜單和工具條 第9章 單文檔界面和多文檔界面 第10章 圖

2、形設(shè)備接口 實驗 (待安排),2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,4,提綱,MFC 編程,第七章 Visual C+ 編程基礎(chǔ),ARM Vector Table,FIQ,IRQ,(Reserved),Data Abort,Prefetch Abort,Software Interrupt,Undefined Instruction,Reset,1,3,2,Windows API 編程,Windows 程序運(yùn)行機(jī)制,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,5,7.1 Windows程序運(yùn)行機(jī)制,Windows中的事件驅(qū)動與消息循環(huán) Windows是一種典型的事件驅(qū)

3、動運(yùn)行機(jī)制; DOS 應(yīng)用程序顯式地運(yùn)用一個函數(shù)(比如gets)來取得輸入;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,6,Windows應(yīng)用程序是等待Windows系統(tǒng)將輸入傳遞給Windows應(yīng)用程序的窗口,當(dāng)窗口有輸入時,窗口過程函數(shù)處理輸入后將控制返回給Windows系統(tǒng); Windows系統(tǒng)以消息的形式將輸入傳給窗口過程;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,7,7.1 Windows程序運(yùn)行機(jī)制,例7.1分析通過鼠標(biāo)在Windows 的畫圖程序窗口中畫一個矩形的消息傳遞和消息處理過程; Windows應(yīng)用程序在運(yùn)行時就是不斷地等待消息,處理消息,又等待

4、消息這個過程循環(huán)往復(fù)直到程序運(yùn)行結(jié)束時為止,一般稱這個過程為消息循環(huán)。,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,8,7.1 Windows程序運(yùn)行機(jī)制,消息和消息處理: 消息的結(jié)構(gòu)MSG: typedef struct tagMSG HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; MSG, *PMSG;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,9,7.1 Windows程序運(yùn)行機(jī)制,MSG數(shù)據(jù)成員含義: 1、hwnd:消息要發(fā)送到的應(yīng)用程序窗口的句柄,如果是在一

5、個有多個窗口的應(yīng)用程序中用此數(shù)據(jù)成員可決定讓哪個窗口接收消息; 2、message:是一個數(shù)值用于惟一標(biāo)識一種消息類型;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,10,3、wParam:是一個32位的消息數(shù)據(jù)成員它的確切意義取決于消息本身; 4、lParam:也是一個32位的消息數(shù)據(jù)成員它的確切意義也取決于消息本身;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,11,5、time:消息放入消息隊列中的時間,在這個數(shù)據(jù)成員中寫入的并不是日期而是從Windows啟動后所測量的時間值用于保持消息正確的順序; 6、pt:消息被放入消息隊列時的鼠標(biāo)坐標(biāo);,2020/6/20,主講

6、教師:四川大學(xué)計算機(jī)學(xué)院 *,12,7.1 Windows程序運(yùn)行機(jī)制,被送往應(yīng)用程序的消息將被應(yīng)用程序窗口的窗口過程函數(shù)所接收,如程序員編寫有相應(yīng)的函數(shù)窗口過程函數(shù)將執(zhí)行對應(yīng)的函數(shù); 一個消息函數(shù)只對應(yīng)一個消息,每個消息都有一個專門的函數(shù)來處理; 回顧例7.1;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,13,7.1 Windows程序運(yùn)行機(jī)制,消息映象機(jī)制: 消息映像指MFC類中將消息與消息處理函數(shù)聯(lián)系起來形成一一對應(yīng)的機(jī)制; 任何一個從類CCmdTarget派生的類都能處理消息都有相應(yīng)的消息映像;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,14,7.1 Windo

7、ws程序運(yùn)行機(jī)制,VC中源文件宏BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之間的代碼為消息映像代碼如象下面程序片段: BEGIN_MESSAGE_MAP(Cstep, CView) / AFX_MSG_MAP(CCircleView) ON_WM_LBUTTONDOWN() ON_WM_LBUTTONLOCK() ON_WM_LBUTTONUP() ON_WM_MOUSEMOVE() / AFX_MSG_MAP END_MESSAGE_MAP(),2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,15,利用ClassWizard消息處理函數(shù)中加入代碼;,2020/6

8、/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,16,7.2 Windows API編程,API和SDK Windows API(Windows Application Programming Interface) 是所有Windows應(yīng)用程序的基礎(chǔ); Windows應(yīng)用程序通過調(diào)用API來請求操作系統(tǒng)完成一些低級服務(wù);,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,17,應(yīng)用程序的窗口圖標(biāo)菜單和對話框等都是由API來進(jìn)行管理和維護(hù)的; Windows API具有兩種基本類型:Win16 API和Win32 API;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,18,7.2 Win

9、dows API編程,WindowsSDK(Windows Software Development Kit)是一套幫助C+語言程序員創(chuàng)建Windows應(yīng)用程序的工具,它包含: 1)大量的在線幫助幫助描述了Windows編程用到的函數(shù)消息結(jié)構(gòu)宏及其他資源; 2)各種編程工具比如對話框編輯器及圖標(biāo)編輯器等;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,19,3)Windows庫及頭文件; 4)使用C+語言編寫的示例程序。 Win32 API可以獲得更高的效率,使用MFC更方便。,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,20,7.2 Windows API編程,Window

10、s API應(yīng)用程序的組成 Windows API應(yīng)用程序主要由入口函數(shù)WinMain和窗口函數(shù)構(gòu)成,其中還包括各種數(shù)據(jù)類型、數(shù)據(jù)結(jié)構(gòu)與函數(shù);,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,21,入口函數(shù)WinMain(): WinMain函數(shù)是所有 Windows 應(yīng)用程序的入口, 與一般 C 語言方式運(yùn)行程序的 main()函數(shù)類似,功能為完成初始化操作, 并產(chǎn)生消息循環(huán); WinMain()函數(shù)有3個基本組成部分:函數(shù)說明, 初始化及消息循環(huán);,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,22,7.2 Windows API編程,1、函數(shù)說明: int WINAPI Wi

11、nMain( HINSTANCE hInstance, /程序?qū)嵗浔?HINSTANCE hPrevInstance,/為保持與 Win16兼容的句柄 LPSTR lpCmdLIne, / 命令行參數(shù) int nCmdShow / 初始化窗口顯示方式 ),2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,23,2、初始化: 通常是為窗口類的成員變量賦初值,以便創(chuàng)建窗口。,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,24,7.2 Windows API編程,3、消息循環(huán): 采用消息循環(huán)接收消息 在API編程中消息循環(huán)一般采用while循環(huán)語句來實現(xiàn)的: while (GetMes

12、sage( / 將消息傳遞給處理函數(shù) ,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,25,7.2 Windows API編程,GetMessage(&msgTmp, NULL, 0, 0) 第一個參數(shù)是要接收消息的MSG結(jié)構(gòu)的地址 第二個參數(shù)表示窗口句柄 NULL則表示要獲取該應(yīng)用程序創(chuàng)建的所有窗口的消息 后三個參數(shù)被設(shè)置為默認(rèn)值表示接收發(fā)送到屬于這個應(yīng)用程序的任何一個窗口的所有消息;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,26,在接收到除WM_QUIT之外的任何一個消息后GetMessage()都返回TRUE,如果CetMessage收到一個WM_QUIT消息則返回

13、FALSE結(jié)束消息循環(huán) TranslateMessage()函數(shù)進(jìn)行翻譯它主要是轉(zhuǎn)換成一些鍵盤消息并為窗口產(chǎn)生相應(yīng)的ASCII字符消息;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,27,7.2 Windows API編程,DispatchMessage()函數(shù)要求Windows將消息傳送給在MSG結(jié)構(gòu)中為窗口所指定的窗口過程函數(shù);,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,28,窗口過程函數(shù)WndProc(): 窗口過程函數(shù)用來處理消息,此函數(shù)的聲明如下: LRESULT CALLBACK WndProc( HWND hWnd, / 窗口句柄 UINT nMessage

14、, / 所發(fā)出的消息 WPARAM wParam, / 參數(shù)1 LPARAM lParam / 參數(shù)2 ),2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,29,7.2 Windows API編程,如果消息處理成功,WndProc返回值為0;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,30,WndProc()函數(shù)中采用switch實現(xiàn)消息的處理,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,31,7.2 Windows API編程,API的程序?qū)嵗?例7.2用API編程實現(xiàn)應(yīng)用程序窗口要求在窗口中響應(yīng)鼠標(biāo)左鍵,鼠標(biāo)右鍵,窗口生成和窗口關(guān)閉的四個消息;,2020/6/

15、20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,32,用VC+6.0開發(fā)API應(yīng)用程序有兩種方法: 在任何文本編輯器中編輯源程序文件和頭文件然后再加入Visual C+ 6.0的工程中; VC+6.0的工程中添加源程序文件和頭文件,然后再利用VC+6.0的編輯器進(jìn)行編輯,最后再進(jìn)行編譯和運(yùn)行;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,33,7.2 Windows API編程,第二種方法的具體操作步驟: 1、創(chuàng)建Win32 Application:,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,34,7.2 Windows API編程,2、選擇“An empty project”;

16、 3、加入源文件smain7_2.cpp,smain7_2.h, sstdafx7_2.cpp、stdafx7_2.h;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,35,在smain7_2.cpp中加入代碼,build,run得結(jié)果:,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,36,7.3 MFC編程,MFC(Microsoft Foundation Class Library)簡介: MFC是C+的類集,MFC提供面向?qū)ο罂蚣?,程序員可使用這一框架容易地創(chuàng)建Windows應(yīng)用程序;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,37,MFC按照面向?qū)ο蟮挠^點以

17、類的層次形式進(jìn)行組織。高層類提供一般功能而低層類實現(xiàn)更具體的行為; 每一個低層類都是從高層類中派生而來并且繼承了高層類的行為;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,38,7.3 MFC編程,CWnd類是實現(xiàn)了Windows窗口中的大多數(shù)常用功能的高層類具備的功能包括打印文本繪制圖形以及跟蹤鼠標(biāo)指針的移動;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,39,MFC能處理很多與Windows相關(guān)的常見任務(wù),無需在所開發(fā)的每一個Windows應(yīng)用程序中編寫相同的消息處理循環(huán),MFC可以實現(xiàn)消息循環(huán)并提供易學(xué)易用的成員函數(shù)如OnLButtonDown()能插入代碼,處理窗口

18、消息;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,40,MFC還提供應(yīng)用程序開發(fā)模型之一的文檔/視圖模型文檔/視圖模型是將應(yīng)用程序數(shù)據(jù)與用戶界面元素分離的一種應(yīng)用程序方法;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,41,7.3 MFC編程,MFC采用了Windows API中的一些功能并有對程序員更友好的C+類使之更易于使用; MFC由很多C+類組成,其中有些類例如CWnd或CWinThread是整個框架中大部分內(nèi)容的基礎(chǔ),這些基類封裝了基本功能,如大多數(shù)Windows應(yīng)用程序都需要的打開窗口功能,還有其他更專門化的類例如 CSplitterWnd是從這些基類中派生而

19、來的;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,42,7.3 MFC編程,MFC的主要類 MFC類庫主要類 1)根類CObject類: CObject類是MFC的抽象基類,是 MFC中大多數(shù)類及用戶自定子類的根類,為程序員提供了許多公共操作,這些操作包括對象的建立和刪除,對象診斷,輸出運(yùn)行時信息等;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,43,2)應(yīng)用程序體系結(jié)構(gòu)類: 這些類用于構(gòu)造出應(yīng)用程序的結(jié)構(gòu),提供多數(shù)應(yīng)用程序共用的功能,這樣便實現(xiàn)了編寫程序的任務(wù),就是填充框架,添加應(yīng)用程序?qū)S玫墓δ?,簡化了?yīng)用程序的開發(fā);,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院

20、 *,44,7.3 MFC編程,命令相關(guān)類CCmdTarget類: CCmdTarget是CObject的子類是MFC庫中所有具有消息映像屬性的類的基類; 消息映像規(guī)定了當(dāng)一對象接收到消息命令時應(yīng)調(diào)用哪一個函數(shù)對該消息進(jìn)行處理;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,45,一般都是從CCmdTarget的子類中派生出新類,如窗口類(CWnd)應(yīng)用程序類(CWinApp)文檔模板類 (CDocTemplate)文檔類(Cdocument)及視圖類 (Cview)等;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,46,窗口應(yīng)用程序類CWinApp類: 每個應(yīng)用程序有且只有

21、一個應(yīng)用程序?qū)ο?用于運(yùn)行程序時此對象與其他對象相互協(xié)調(diào),應(yīng)用程序?qū)ο髲腃WinApp類中派生出來; 窗口應(yīng)用程序類封裝了初始化運(yùn)行終止應(yīng)用程序的代碼;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,47,7.3 MFC編程,文檔/視圖類: 文檔對象是由文檔模板對象所創(chuàng)建的用于管理應(yīng)用程序的數(shù)據(jù); 視圖對象表示一個窗口的用戶區(qū)顯示文檔數(shù)據(jù)并允許用戶與其交互;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,48,文檔/視圖類包括以下子類或模板: 1)CDocTemplate文檔模板的基類文檔模板, 用于協(xié)調(diào)文檔視圖和框架窗口的創(chuàng)建; 2)CSingleDocTemplate單文檔

22、界面SDI的文檔模板;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,49,3)CMultiDocTemplate多文檔界面MDI的文檔模板; 4)CDocument應(yīng)用程序?qū)S梦臋n的基類; 5)CView用于顯示文檔數(shù)據(jù)的應(yīng)用程序?qū)S幸晥D的基類;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,50,7.3 MFC編程,可視對象類: 窗口類CWnd: CWnd類提供了MFC中所有窗口類的基本功能,是CCmdTarget類的子類; 創(chuàng)建一個Windows窗口要分兩步進(jìn)行: 1)構(gòu)造一個CWnd對象;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,51,2)調(diào)用Create

23、建立Windows窗口并將它連到CWnd對象上;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,52,7.3 MFC編程,MFC中還包括從CWnd類派生出來的進(jìn)一步的窗口類型以完成更具體的窗口創(chuàng)建工作,這些派生類有: 1)CFrameWnd框架窗口類是SDI應(yīng)用程序主框架窗口的基類;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,53,2)CMDIFrameWnd多文檔框架窗口類是MDI應(yīng)用程序主框架窗口的基類; 3)CMDIChildWnd多文檔子窗口類是MDI應(yīng)用程序文檔框架窗口的基類;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,54,7.3 MFC編程,視圖類

24、CView: CView類用于表示框架窗口的客戶區(qū)以及顯示文檔數(shù)據(jù); CView類包括以下子類: 1)CScrollView具有滾動功能的視圖的基類; 2)CEditView具有文本編輯查找替換和滾動功能的視圖的基類;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,55,菜單類CMenu類: CMenu類是CObject類的子類用于管理菜單,提供了與窗口有關(guān)的菜單資源,建立修改跟蹤及刪除功能的成員函數(shù);,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,56,7.3 MFC編程,對話框類CDialog: CDialog類是從CWnd類中派生出來的對話框類; 它包括如下一些子類: C

25、FileDialog提供用于打開或保存文件的標(biāo)準(zhǔn)對話框;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,57,CColorDialog提供用于選擇顏色的標(biāo)準(zhǔn)對話框; CFontDialog提供用于選擇字體的標(biāo)準(zhǔn)對話框; CPrintDialog提供用于打印文件的標(biāo)準(zhǔn)對話框; CFindReplaceDialog提供用于刪除查找并替換的標(biāo)準(zhǔn)對話框;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,58,7.3 MFC編程,控制類: 控制類子層次結(jié)構(gòu)為Windows應(yīng)用程序提供了各種輸入和顯示界面的控件類,這時控件指放在窗口中可視對象; Cstatic:常用于標(biāo)注分隔窗口中其他控件;

26、,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,59,Cbutton:為對話框或窗口中的按鈕復(fù)選框或單選按鈕提供一個總的接口; Cedit:用于接收用戶的文字輸入; CRichEditCtrl:除了提供文本編輯控件的功能外還支持字符和圖形格式等功能; CSrollBar:提供控制條的功能用做對話框或窗口中的一個控件用戶可通過它在某一范圍內(nèi)進(jìn)行定位;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,60,7.3 MFC編程,CProgressCtrl:用于指示操作的進(jìn)度; CSliderCtrl:包括一個可移動的滑標(biāo)用戶可移動滑標(biāo)來選擇一個值或一個范圍; CListBox:用于顯示

27、一組列表項用戶可以進(jìn)行觀察和選擇;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,61,CComboBox:組合框控件類由一個編輯控制加一個列表框組成; CBitmapButton:位圖按鈕控件類是帶有位圖而非文字標(biāo)題的按鈕; CSpinButtonCtrl:帶有一個雙向箭頭按鈕的控件類用戶單擊某個箭頭按鈕將增大值或減小值; CAnimateCtrl:動畫顯示控件類用于顯示一個簡單的視頻圖像;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,62,7.3 MFC編程,控制條類CControlBar: 控制條類是如下兩個子類的基類: CToolBar工具條控件類, CStatusB

28、ar狀態(tài)條控件類 ;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,63,設(shè)備描述表類CDC類: CDC類及其子類支持設(shè)備描述表對象,是CObject類的子類,通過CDC對象的成員函數(shù)可以完成所有的繪畫工作;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,64,CDC包括的子類有: CPaintDC:用于窗口的OnPaint成員函數(shù)和視圖的OnDraw成員函數(shù)中自動調(diào)用BeginPaint進(jìn)行構(gòu)造,調(diào)用EndPaint進(jìn)行析構(gòu); CClientDC:用于窗口客戶區(qū)的顯示描述表; CWindowDC:用于在整個窗口的顯示描述表包括用戶區(qū)和框架區(qū);,2020/6/20,主講教師:四

29、川大學(xué)計算機(jī)學(xué)院 *,65,7.3 MFC編程,繪畫對象類CGdiObject類: 圖形繪畫對象子層次結(jié)構(gòu)以CGdiObject類為根類,用于建立繪畫對象模型,如畫筆刷子字體位圖調(diào)色板等,包括有如下一些子類: CBitmap封裝有GDI位圖提供了一個操作位圖的接口;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,66,CBrush封裝有GDI畫刷可選擇設(shè)備描述表的當(dāng)前畫刷; CFont封裝有GDI字體可選擇設(shè)備描述表的當(dāng)前字體; CPalette封裝有GDI調(diào)色板是應(yīng)用程序和彩色輸出設(shè)備如顯示器之間的接口;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,67,7.3 MFC編程

30、,CPen封裝有GDI畫筆可選擇設(shè)備描述表的當(dāng)前畫筆; CRgn封裝GDI區(qū)域用于操作窗口內(nèi)的橢圓區(qū)域或多邊形區(qū)域該類應(yīng)與CDC類的裁剪成員函數(shù)起使用;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,68,7.3 MFC編程,MFC的消息與消息處理方法: 在MFC類中使用消息映像機(jī)制將消息與消息處理聯(lián)系起來; 程序員不必編寫WinMain()函數(shù),發(fā)送消息到WndProc()函數(shù);,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,69,程序員只需直接編寫對應(yīng)消息響應(yīng)函數(shù)而消息和消息處理將由VC6內(nèi)部自動添加一個消息映像關(guān)系進(jìn)行對應(yīng); 例7.3,利用MFC的消息映像機(jī)制編程,其步驟

31、為:,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,70,1)創(chuàng)建工程,工程類型為MFC AppWizard(exe); 2)選擇Single document; 3)使用 ClassWizard為WM_CREATE及WM_DESTROY創(chuàng)建消息響應(yīng)代碼;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,71,7.3 MFC編程,AppWizard與ClassWizard: AppWizard用于生成應(yīng)用程序框架,ClassWizard用于添加自己的類和成員; 只有學(xué)會AppWizard和ClassWizard才掌握了程序的編寫方法;,2020/6/20,主講教師:四川大學(xué)計算機(jī)

32、學(xué)院 *,72,AppWizard: AppWizard是開發(fā)Windows應(yīng)用程序的最簡單最方便的方法,它用于創(chuàng)建基于MFC類庫的Windows應(yīng)用程序框架文件如源文件頭文件資源文件等;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,73,7.3 MFC編程,AppWizard的啟動和界面介紹: 文件類型:,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,74,7.3 MFC編程,文件類型續(xù):,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,75,7.3 MFC編程,工程類型:,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,76,7.3 MFC編程,工程類型,續(xù):

33、,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,77,7.3 MFC編程,AppWizard的使用: AppWizard生成的應(yīng)用程序結(jié)構(gòu): 1、應(yīng)用程序包含的類 AppWizard生成的應(yīng)用程序共派生了五個類打開例7.3的s7_3在工程的工作區(qū)窗口中選擇ClassView選項卡從中可看到工程的五個類如下圖所示:,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,78,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,79,7.3 MFC編程,1)應(yīng)用程序類CS7_3App: 從CWinApp類中派生出來,功能是為應(yīng)用程序的所有對象包括文檔視圖和邊框窗口進(jìn)行初始化,在應(yīng)用程序中

34、有且僅有一個應(yīng)用程序?qū)ο蟊粍?chuàng)建;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,80,2)文檔類CS7_3Doc: 從CDocument類派生出來,主要用于存放應(yīng)用程序的數(shù)據(jù),同時實現(xiàn)數(shù)據(jù)的保存和裝載功能; 3)視圖類CS7_3View: 從CView類中派生出來主要用于顯示儲存在文檔對象中的數(shù)據(jù);,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,81,7.3 MFC編程,4)對話框類CAboutDlg: 從Cdialog派生出來的用于顯示關(guān)于對話框; 5)主框架窗口類CMainFrame: 它是CSDIFrameWnd類中派生出來的主框架窗口,主要用于管理應(yīng)用程序窗口,顯示菜單

35、欄,標(biāo)題欄,工具欄,狀態(tài)欄控制菜單和控制按鈕等;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,82,對于多文檔應(yīng)用程序?qū)⒂兄骺蚣艽翱陬怌MainFrame和子窗口框架類CchildFrame主框架窗口類;CmainFrame是從CMDIFrameWnd類中派生出來的,CchildFrame是從CMDIChildWnd類中派生出來的主要用于管理在MDI主框架窗口中打開的各個文檔;,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,83,7.3 MFC編程,2.應(yīng)用程序的文件說明:,2020/6/20,主講教師:四川大學(xué)計算機(jī)學(xué)院 *,84,7.3 MFC編程,ClassWizard 類向?qū)Чぞ逤lassWizard用于對應(yīng)用程序框架進(jìn)行修改,編輯或補(bǔ)充,所以ClassWizard是對應(yīng)用程序中的類進(jìn)行管理的重要

溫馨提示

  • 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

提交評論