資源描述:
《人機(jī)交互程序設(shè)計(jì)教學(xué)課件mfc編程框架解密》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、MFC編程框架解密Windows程序設(shè)計(jì)本課主要內(nèi)容1.MFC類庫2.MFC應(yīng)用程序框架原理3.MFC的消息處理1.類庫概念——面向?qū)ο罄斫饷嫦驅(qū)ο笫裁词穷??什么是?duì)象?什么是繼承?什么是封裝?什么是多態(tài)?1.類庫概念——MFC類庫是一個(gè)可以在應(yīng)用程序中使用的相互關(guān)聯(lián)的類的集合。MFC庫(Microsoft基本類庫)是一個(gè)Windows應(yīng)用程序框架,它把傳統(tǒng)的Windows編程規(guī)范中的大多數(shù)內(nèi)容封裝成為各種類,它定義了應(yīng)用程序的結(jié)構(gòu),并實(shí)現(xiàn)了標(biāo)準(zhǔn)的用戶接口,提高了編程效率可以管理窗口、菜單、對(duì)話框,實(shí)現(xiàn)基
2、本的輸入/輸出和數(shù)據(jù)存儲(chǔ)。1.類庫概念——MFCMFC分類CObject_derived類Non_CObject_derived類CObjectCCmdTargetCWinThreadCWinAppCWndCFrameWndCViewCDocument根類命令相關(guān)類應(yīng)用程序類窗口類文檔類視圖類框架窗口類線程基類1.非CObject派生類通用工具類CStringCTimeCRectCpointCSizeMFC支持類CArchiveCDumpContextCRuntimeClassCFileStatusCMe
3、moryStateCTypePointerArray1.CString類常用字符串操作有哪些?拷貝、連接、查找、替換、比較C語言中怎么處理字符串的?strcpystrcatstrstrstrcmp1.CString類MFC中用CString代替了繁瑣的字符串操作。CStringstr1;拷貝:str1=“helloWorld”;連接:str1+=“你好!”;比較:if(str1!=str2)……查找:str1.Find(“hello”);替換:str1.Replace(“hello”,“嗨”);格式化處理
4、:str1.Formate(“%d”,10);……2.MFC應(yīng)用程序框架原理開始Windows入口函數(shù)消息循環(huán)結(jié)束?結(jié)束消息1輸入界面控件響應(yīng)系統(tǒng)事件注冊(cè)窗口類創(chuàng)建窗口是否窗口過程處理函數(shù)…消息n消息22.MFC應(yīng)用程序框架原理2.MFC應(yīng)用程序框架原理MFC應(yīng)用程序有自己特殊的運(yùn)行機(jī)制,下面以WinHello程序?yàn)槔?,列出?yīng)用程序的執(zhí)行過程。程序開始初始化全局對(duì)象theAppCWinApp類構(gòu)造函數(shù)CHelloApp類構(gòu)造函數(shù)AfxWinMain函數(shù)pApp->InitInstance()調(diào)用Proce
5、ssShellCommand()創(chuàng)建主框架窗口對(duì)象、視圖對(duì)象、文檔對(duì)象,創(chuàng)建主框架窗口和視圖窗口并顯示CWinThread::Run()WM_QUIT消息循環(huán)結(jié)束pApp->Run()CHelloApptheAppCWinApp*pApp=AfxGetApp();WinMainpApp->InitApplication();WinMain()函數(shù),隱藏在應(yīng)用程序框架中;應(yīng)用程序類(如CMyHelloApp),該類的每個(gè)對(duì)象代表一個(gè)應(yīng)用程序,程序中默認(rèn)定義一個(gè)全局CMyHelloApp對(duì)象即theApp;應(yīng)
6、用程序啟動(dòng)WinMain()尋找由CWinApp派生出的全局構(gòu)造的應(yīng)用程序?qū)ο?;成員函數(shù):CMyHelloApp::InitInstance(),調(diào)用所需的構(gòu)造并顯示應(yīng)用程序的主框架窗口;成員函數(shù):CWinApp::Run(),隱藏在基類中,發(fā)送應(yīng)用程序的消息到窗口,保持應(yīng)用程序的正常運(yùn)行;2.MFC應(yīng)用程序框架原理2.MFC應(yīng)用程序框架優(yōu)點(diǎn)MFC的應(yīng)用程序框架優(yōu)點(diǎn):MFC按照C++類的層次形式組織在一起,類封裝了WindowsAPI函數(shù)并提供Windows應(yīng)用程序常見任務(wù)的缺省處理代碼。幾個(gè)基類提供一般
7、功能,由基類派生的類實(shí)現(xiàn)更具體的行為。MFC提供了文檔和視圖模型以實(shí)現(xiàn)數(shù)據(jù)和顯示的分離。文檔類(Document)用來維護(hù)、管理數(shù)據(jù),包括數(shù)據(jù)的讀取、存儲(chǔ)與修改;視圖類(View)用來接收并顯示數(shù)據(jù),將這些數(shù)據(jù)交給文檔類來處理。MFC庫提供了自動(dòng)消息處理功能。MFC的框架結(jié)構(gòu)通過消息映射機(jī)制,將Windows消息直接映射到—個(gè)成員函數(shù)進(jìn)行處理,簡(jiǎn)化了消息的處理方式。3.MFC消息處理MFC應(yīng)用程序與其他任何Windows程序一樣,也使用消息驅(qū)動(dòng)機(jī)制,但MFC提供的消息處理機(jī)制使得消息的處理更加容易。MFC
8、中消息可以分為三類:Windows消息(窗口消息):包括以WM_開頭的消息,但WM_COMMAND除外。Windows消息由窗口和視圖處理。這種消息通常附帶一些參數(shù)傳遞給處理函數(shù),這些參數(shù)為處理函數(shù)正確地處理消息提供了必要的信息??丶ㄖⅲ寒?dāng)控件的狀態(tài)發(fā)生改變(例如用戶利用控件進(jìn)行輸入)時(shí),控件就會(huì)向其父窗口發(fā)送控件通知消息。MFC對(duì)控件通知消息的傳遞方式與其他以WM_開頭的Windows消息一樣,但BN_CLICKED是