MFC 类库结构 总结
MFC主要類庫結(jié)構(gòu)總結(jié)
MFC類主要分為應(yīng)用程序結(jié)構(gòu)類、窗口支持類、圖書設(shè)備類、模版集合類、簡單數(shù)據(jù)類型類以及全局AFX函數(shù)等6個(gè)類。
1.??????應(yīng)用程序結(jié)構(gòu)類
應(yīng)用程序結(jié)構(gòu)類代表的是應(yīng)用程序的基本元素,主要包括了CcmdTarget類、CwinThread類、CwinApp類、Cdocument類以及CdocTemplate類等。應(yīng)用程序開始運(yùn)行時(shí),應(yīng)用程序結(jié)構(gòu)類最先被初始化。應(yīng)用程序結(jié)構(gòu)類的繼承結(jié)構(gòu)如圖:
CCmdTarget類是MFC類庫中消息映射體系的基類,繼承于Cobject類。該類負(fù)責(zé)把消息命令傳遞給用戶編寫的消息響應(yīng)函數(shù),如果需要處理消息,則從CcmdTarget類中派生一個(gè)類出來,但很少從CCmdTarget類直接派生類出來用。
CWinThread類的對象代表應(yīng)用程序內(nèi)部運(yùn)行的線程。運(yùn)行的主線程通常由CwinApp類的派生類提供。并CwinThread類支持兩種線程:工作線程和用戶界面線程.工作線程不能夠發(fā)送、接收消息,通常用于后臺(tái)運(yùn)行;用戶界面線程能夠發(fā)送和接收消息,直接派生于CwinThread類。
CWinApp類表示應(yīng)用程序類,在使用MFC創(chuàng)建的所有應(yīng)用程序中,都包含一個(gè)繼承于該類的應(yīng)用程序子類。CwinApp類中封裝了windows的消息循環(huán)機(jī)制,并負(fù)責(zé)應(yīng)用程序的初始化和退出的清理工作。
文檔類CDocument類直接派生于CCmdTarget類,提供了文檔的基本功能,并且CDocument類是Document/View結(jié)構(gòu)中的應(yīng)用程序文檔的基類,主要用于代表程序中的數(shù)據(jù)。
CDocTemplate類定義了文檔模版的基本函數(shù)功能。通常通過應(yīng)用程序類的InitInstance函數(shù)來創(chuàng)建一或多個(gè)文檔模版。文檔模版定義了框架,文檔和視圖三個(gè)類之間的關(guān)系。
?
2窗口支持類
窗口支持類包含了基于Windows應(yīng)用程序的一些可視性元素,如窗口,對話框,控件等。窗口支持類中的所有類都是從CWnd類中派生的,包括CFrameWnd類,CDialog類,CView類,常用控件等。那么窗口支持類的繼承框架如下:
MFC應(yīng)用程序中的所有窗口都是繼承于CWnd類,CWnd類提供了MFC中所有窗口類的基本功能。根據(jù)窗口的不同類型,CWnd類派生出了許多子類,如框架窗口類CFrameWnd,對話框類CDialog,視圖類CView等。
框架窗口類CFrameWnd提供Windows單文檔界面(SDI)的重疊或彈出式的框架窗口,并提供管理窗口的成員。CFrameWnd類的派生類CMDIFrameWnd類則提供了多文檔界面(MDI)框架窗口,CMDIChildWnd類則提供了多文檔界面的子窗口。
對話框類CDialog類是在屏幕上顯示的對話框的基類。CDialog類對象是對話框模版與一個(gè)CDialog派生類的組合,通過使用對話框編輯器創(chuàng)建對話框并存入資源之中,然后為對話框創(chuàng)建一個(gè)CDialog派生類。
視圖類CView是應(yīng)用程序框架窗口中的子窗口,視圖是用戶與文檔交互的媒介,用戶可以在視圖窗口內(nèi)輸入文本,繪圖等。
?
3圖像設(shè)備類
MFC提供圖形設(shè)備類中包含了設(shè)備環(huán)境(Device Context)類,以及一些常用的GDI對象。設(shè)備環(huán)境類中包含了一組繪制圖形的函數(shù)集合,以及確定繪圖的模式和繪圖的映射模式。繪圖對象類封裝了常用GDI繪圖對象,包括畫筆(Pen),刷子(Brush),字體(Font),位圖(Bitmap),調(diào)色板(Palette)和區(qū)域(Region)這些類的繼承結(jié)構(gòu)如下:
根據(jù)不同的輸出設(shè)備, MFC分別提供了相應(yīng)的設(shè)備環(huán)境類,而CDC類是所有設(shè)備環(huán)境的基類,該類封裝了所有圖形輸出函數(shù)。CDC類派生了CClientDC類、CMetaFileDC類,CPaintDC類以及CWindowDC類。
CClientDC類主要提供了對窗口的客戶區(qū)域的圖形操作。窗口的客戶區(qū)域是排除窗口的框架,標(biāo)題欄,菜單欄,工具欄和狀態(tài)欄的區(qū)域。
CMetaFileDc類專門用于圖元文件的繪制。圖元文件記錄一組GDI命令,可以通過這一組GDI命令重建圖形輸出。使用CMetaFileDC時(shí),所有的圖形輸出命令會(huì)自動(dòng)記錄到一個(gè)與CMetaFileDC相關(guān)聯(lián)的圖元文件中。
CPaintDC類是響應(yīng)WM_PAINT消息的設(shè)備環(huán)境。當(dāng)窗口需要重繪時(shí),應(yīng)用程序響應(yīng)OnPaint消息來刷新窗口的實(shí)現(xiàn),CPaintDC類通常在MFC應(yīng)用程序的OnPain函數(shù)中使用。
CWindowDC類可以提供在整個(gè)窗口內(nèi)繪圖的設(shè)備環(huán)境,該設(shè)備環(huán)境可以用于窗口客戶區(qū)和非客戶區(qū)的繪制,除非用戶需要單獨(dú)繪制窗口邊框和按鈕,否則一般不使用CWindowDC環(huán)境。
?
4模版集合類
模版集合類主要分為3個(gè)部分:數(shù)組類,鏈表類和映射類,在這里暫不做詳細(xì)總結(jié)
5簡單數(shù)據(jù)類型類
簡單數(shù)據(jù)類型類定義了一些常用的數(shù)據(jù)類型,包括CPoint類,CSize類,CRect類,CString類和CTime類。分別代表點(diǎn),尺寸大小,矩形區(qū)域,字符串和日期時(shí)間,這些都是MFC中常用的數(shù)據(jù)類型
CPoint類封裝了windows的POINT數(shù)據(jù)結(jié)構(gòu),并提供了操作CPoint和POINT結(jié)構(gòu)的成員函數(shù)。CPoint類對象可以被用在任意可以使用POINT結(jié)構(gòu)的地方。
CRect類封裝了Windows的RECT結(jié)構(gòu)。CRect類定義了矩形的左上角和右下角點(diǎn)的坐標(biāo),并提供一些基本的矩形處理函數(shù)。
CSize類也封裝了Windows的SIZE結(jié)構(gòu)。CSize類直接繼承SIZE結(jié)構(gòu)體,SIZE和CSize包含了兩個(gè)cx,和cy的公有成員變量,用來表示一個(gè)尺寸大小的寬度和高度。
CString類的對象由可變長的字符組成。CString使用類似于Basic的語法提供函數(shù)和操作符。
CTime對象代表一個(gè)絕對的時(shí)間和日期。CTime類引入了ANSI的time_t數(shù)據(jù)類型以及相關(guān)的運(yùn)行時(shí)函數(shù)。
6全局AFX函數(shù)
MFC類庫主要可以分為兩個(gè)部分:MFC類和宏與全局函數(shù)。
常用的MFC全局函數(shù)如下:
全局函數(shù)
說明
AfxMessageBox
顯示一個(gè)消息提示框,功能與MessageBox相同
AfxFreeLibrary
用于釋放由AfxLoadLibrary載入的動(dòng)態(tài)鏈接庫(DLL)模塊
AfxGetApp
取得應(yīng)用程序中唯一的CWinApp對象的指針
AfxGetAppName
返回一個(gè)包含應(yīng)用程序名字的字符串
AfxGetInstance
獲取當(dāng)前運(yùn)行實(shí)例的句柄
AfxGetInstanceHandle
返回一個(gè)代表當(dāng)前應(yīng)用程序?qū)嵗腍INSTANCE變量
AfxGetMainWnd
返回指向應(yīng)用程序的當(dāng)前主窗口的指針
AfxGetResourceHandle
返回代表應(yīng)用程序默認(rèn)資源的HINSTANCE變量
AfxLoadLibrary
調(diào)用一個(gè)DLL模版,同時(shí)返回一個(gè)句柄
AfxSocketInit
初始化Windows套接字Socket
AfxSetResourceHandle
設(shè)置指向應(yīng)用程序默認(rèn)資源的句柄
AfxBeginThread
創(chuàng)建一個(gè)新線程
AfxEndThread
結(jié)束當(dāng)前線程
AfxGetThread
取得指向當(dāng)前線程的CWinThread指針
AfxWinInit
由MFC提供的WinMain函數(shù)調(diào)用,用于初始化應(yīng)用程序
---------------------?
?
原文:https://blog.csdn.net/xiaolongwang2010/article/details/9843077?
?
總結(jié)
以上是生活随笔為你收集整理的MFC 类库结构 总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: symbian系统开发教程(一)
- 下一篇: 加薪——爱你在心口难开