版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第8章MFC基礎(chǔ)知識(shí)1第8章MFC基礎(chǔ)知識(shí)18.1MFC概述
MFC是用來(lái)編寫(xiě)Windows應(yīng)用程序的C++類(lèi)集,該類(lèi)集以層次結(jié)構(gòu)組織起來(lái),其中封裝了大部分WindowsAPI函數(shù)和Windows控件,它所包含的功能涉及到整個(gè)Windows操作系統(tǒng)。MFC不僅為用戶(hù)提供了Windows圖形環(huán)境下應(yīng)用程序的框架,而且還提供了創(chuàng)建應(yīng)用程序的組件。28.1MFC概述MFC是用來(lái)編寫(xiě)WindowsMFC還很好地保持了程序的向下兼容性是用來(lái)編寫(xiě)Windows應(yīng)用程序的C++類(lèi)集以層次結(jié)構(gòu)組織封裝了大部分API函數(shù)提供了圖形環(huán)境下應(yīng)用程序的框架提供了創(chuàng)建應(yīng)用程序的組件提供了大量的基類(lèi)供程序員根據(jù)不同的應(yīng)用環(huán)境進(jìn)行擴(kuò)充允許在編程過(guò)程中自定義和擴(kuò)展應(yīng)用程序中的類(lèi)較好的移植性,可移植于眾多的平臺(tái)MFC3MFC還很好地保持了程序的向下兼容性是用來(lái)編寫(xiě)WindowsMFC1.0&MSC/C++7.0應(yīng)用程序中非圖形部分的類(lèi)GUI功能的Windows相關(guān)類(lèi)MFC2.0&MSVC++1.0在1.0基礎(chǔ)上增添了一些應(yīng)用程序MFC3.0&VC++2.0增添了對(duì)開(kāi)發(fā)32位應(yīng)用程序的支持MFC2.0&MSVC++1.5添加了ODBC類(lèi),并且還支持OLE的性能MFC4.0包含了在Win95和N中大多數(shù)新的公共控件和DAO、MAPI增強(qiáng)了對(duì)數(shù)據(jù)庫(kù)應(yīng)用程序的支持利用DAO類(lèi)通過(guò)編程語(yǔ)言來(lái)訪(fǎng)問(wèn)、操縱和管理數(shù)據(jù)庫(kù)對(duì)Internet也提供了強(qiáng)有力的支持MFC4.214MFC1.0&MSC/C++7.0應(yīng)用程序中非圖形部分MFC5.0增強(qiáng)了對(duì)數(shù)據(jù)庫(kù)和Internet的支持,可使用ODBC類(lèi)和ODBC驅(qū)動(dòng)程序來(lái)訪(fǎng)問(wèn)提供ODBC支持的數(shù)據(jù)庫(kù)中的數(shù)據(jù);可以通過(guò)數(shù)據(jù)訪(fǎng)問(wèn)對(duì)象(DAO)類(lèi)通過(guò)編程語(yǔ)言來(lái)訪(fǎng)問(wèn)和操縱數(shù)據(jù)庫(kù)中的數(shù)據(jù)并管理數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)對(duì)象與結(jié)構(gòu)。這些支持主要包括以下幾個(gè)部分:Win32InternetAPI使Internet成為應(yīng)用程序的一部分并簡(jiǎn)化了對(duì)Internet服務(wù)的訪(fǎng)問(wèn)Activex文檔可以顯示在整個(gè)Web瀏覽器或OLE容器的整個(gè)客戶(hù)窗口中
Activex控件可以用在Internet和桌面應(yīng)用程序中可以使用CHttpServer、CHttpFilter、ChttpServerContext和CHttpFilterContext類(lèi)來(lái)建立動(dòng)態(tài)DLL,以便為Web頁(yè)面增添功能5MFC5.0增強(qiáng)了對(duì)數(shù)據(jù)庫(kù)和Internet的支持,可使MFC6.0中引進(jìn)了新的功能:提出了活動(dòng)文檔容器來(lái)管理不同類(lèi)型的文檔,并通過(guò)引入類(lèi)COleDocObjectItem來(lái)加以實(shí)現(xiàn)。同時(shí)在應(yīng)用程序向?qū)е幸布尤肓藢?duì)這一新特性的支持。加入了對(duì)動(dòng)態(tài)HTML技術(shù)的支持,通過(guò)引入一個(gè)新類(lèi)CHtmlView,使程序員開(kāi)發(fā)的應(yīng)用程序可以瀏覽并顯示用動(dòng)態(tài)HTML技術(shù)開(kāi)發(fā)的HTML文檔。類(lèi)CHtmlView中封裝了許多瀏覽器的特征,包括瀏覽器在歷史記錄、書(shū)簽和安全等方面的特征都被封裝進(jìn)了類(lèi)CHtmlView。擴(kuò)展了對(duì)公共控件的支持,如時(shí)間控鍵、IP地址控鍵和日期控鍵等。6MFC6.0中引進(jìn)了新的功能:68.2MFC類(lèi)的組織結(jié)構(gòu)及主要的類(lèi)的簡(jiǎn)介
78.2MFC類(lèi)的組織結(jié)構(gòu)及主要的類(lèi)的簡(jiǎn)介78.2.1MFC類(lèi)的組織結(jié)構(gòu)
MFC庫(kù)中的類(lèi)按層次關(guān)系劃分類(lèi):(1)根類(lèi):CObject(2)應(yīng)用程序體系結(jié)構(gòu)類(lèi)(3)窗口、對(duì)話(huà)框和控件類(lèi)(4)繪圖和打印類(lèi)(5)簡(jiǎn)單數(shù)據(jù)類(lèi)型類(lèi)(6)數(shù)組、列表和映射類(lèi)(7)文件和數(shù)據(jù)庫(kù)類(lèi)(8)Internet和網(wǎng)絡(luò)工作類(lèi)(9)OLE類(lèi)(10)調(diào)試和異常類(lèi)88.2.1MFC類(lèi)的組織結(jié)構(gòu)MFC庫(kù)中的類(lèi)按層次關(guān)系劃分8.2.2根類(lèi)--CObjec
MFC中多數(shù)類(lèi)和用戶(hù)自定義子類(lèi)的根類(lèi),是抽象基類(lèi)。它提供了許多編程所需的公共操作。對(duì)象的建立對(duì)象的刪除運(yùn)行時(shí)信息對(duì)象診斷輸出串行化支持應(yīng)用程序和線(xiàn)程支持類(lèi)命令相關(guān)類(lèi)文檔類(lèi)文檔模板類(lèi)視類(lèi)(體系結(jié)構(gòu))框架窗口(體系結(jié)構(gòu))應(yīng)用程序體系結(jié)構(gòu)類(lèi)窗口、對(duì)話(huà)框和控件類(lèi)框架窗口類(lèi)(窗口)視類(lèi)(窗口)對(duì)話(huà)框類(lèi)控件條類(lèi)繪圖和打印類(lèi)輸出(設(shè)備相關(guān))類(lèi)繪圖工具類(lèi)簡(jiǎn)單數(shù)據(jù)類(lèi)型類(lèi)數(shù)組、列表和映射類(lèi)數(shù)組類(lèi)列表類(lèi)映射類(lèi)98.2.2根類(lèi)--CObjecMFC中多數(shù)類(lèi)和用戶(hù)自文件和數(shù)據(jù)庫(kù)類(lèi)文件I/O類(lèi)DAO類(lèi)ODBC類(lèi)Internet和網(wǎng)絡(luò)工作類(lèi)LSAPI類(lèi)WindowsSocket類(lèi)Win32Internet類(lèi)OLE類(lèi)OLE容器類(lèi)OLE服務(wù)器類(lèi)OLE拖放和數(shù)據(jù)傳輸類(lèi)OLE普通對(duì)話(huà)框類(lèi)OLE動(dòng)畫(huà)類(lèi)OLE動(dòng)畫(huà)類(lèi)OLE控件類(lèi)活動(dòng)文檔類(lèi)其他文檔類(lèi)調(diào)試和異常類(lèi)調(diào)試支持類(lèi)異常類(lèi)10文件和數(shù)據(jù)庫(kù)類(lèi)文件I/O類(lèi)Internet和網(wǎng)絡(luò)工作類(lèi)LSA8.2.3應(yīng)用程序體系結(jié)構(gòu)類(lèi)
1.命令相關(guān)類(lèi):CCmdTarget類(lèi)該類(lèi)是CObject的子類(lèi),它是MFC庫(kù)中所有具有消息映射屬性的基類(lèi)。消息映射規(guī)定了當(dāng)一對(duì)象接收到消息命令時(shí),應(yīng)調(diào)用哪一個(gè)函數(shù)對(duì)該消息進(jìn)行處理應(yīng)用程序體系結(jié)構(gòu)類(lèi)1.命令相關(guān)類(lèi)2.窗口應(yīng)用程序類(lèi)3.文檔/視類(lèi)4.線(xiàn)程基類(lèi)編寫(xiě)程序的任務(wù)是填充框架,添加應(yīng)用程序?qū)S玫墓δ苡糜跇?gòu)造應(yīng)用程序框架的結(jié)構(gòu),提供多數(shù)應(yīng)用程序公用的功能2.線(xiàn)程基類(lèi):CWinThread類(lèi)所有線(xiàn)程的基類(lèi),可直接使用。CWinApp類(lèi)就是從CWinThread類(lèi)中派生出來(lái)的118.2.3應(yīng)用程序體系結(jié)構(gòu)類(lèi)1.命令相關(guān)類(lèi):CCmdTar4.文檔/視類(lèi)文檔對(duì)象由文檔模板對(duì)象創(chuàng)建,管理應(yīng)用程序的數(shù)據(jù)。視對(duì)象表示一個(gè)窗口的客戶(hù)區(qū),顯示文檔數(shù)據(jù)并允許用戶(hù)與之交互3.窗口應(yīng)用程序類(lèi):CWinApp類(lèi)每個(gè)應(yīng)用程序有且只有一個(gè)應(yīng)用程序?qū)ο?,在運(yùn)行程序中該對(duì)象與其它對(duì)象相互協(xié)調(diào),該對(duì)象從CWinApp類(lèi)中派生出來(lái)。CWinApp類(lèi)封裝了初始化、運(yùn)行、終止應(yīng)用程序的代碼。124.文檔/視類(lèi)文檔對(duì)象由文檔模板對(duì)象創(chuàng)建,管理應(yīng)用程在CWinApp中定義的部分函數(shù)的功能有時(shí)也可以通過(guò)MFC提供的全局函數(shù)來(lái)實(shí)現(xiàn),這些全局函數(shù)一般都以Afx為前綴。例如調(diào)用AfxMessageBox函數(shù)將彈出一個(gè)消息框,其功能與CWinApp中的DoMessageBox相同。AfxMessageBox原型如下:intAfxMessageBox(LPCTSTRlpszText,UINTnType=MB_OK,UINTnIDHelp=0)13在CWinApp中定義的部分函數(shù)的功能有時(shí)也可以通過(guò)MFC提8.2.4可視對(duì)象類(lèi)
2.視類(lèi):CView類(lèi)該類(lèi)表示框架窗口的客戶(hù)區(qū)和顯示文檔數(shù)據(jù)并接收輸入的客戶(hù)區(qū),其派生類(lèi)主要有如下幾種:CScrollView:具有滾動(dòng)功能的視的基類(lèi)CFormView:其布局在對(duì)話(huà)資源中定義的滾動(dòng)視CEditView:具有文本編輯、查找、替換和滾動(dòng)功能的視1.窗口類(lèi):CWnd類(lèi)Cwnd提供了MFC中所有窗口類(lèi)的基本功能,是CCmdTarget類(lèi)的子類(lèi)創(chuàng)建Windows窗口要分兩步進(jìn)行引入構(gòu)造函數(shù),構(gòu)造一個(gè)CWnd對(duì)象調(diào)用Create建立Windows窗口,并將它連到CWnd對(duì)象上148.2.4可視對(duì)象類(lèi)2.視類(lèi):CView類(lèi)該類(lèi)表示框架窗3.菜單類(lèi):CMenu類(lèi)該類(lèi)是CObject類(lèi)的子類(lèi),用于管理菜單。它是一個(gè)WindowsHMenu的封裝,提供了與窗口有關(guān)的菜單資源建立、修改、跟蹤及刪除的成員函數(shù)。4.對(duì)話(huà)框類(lèi):CDialog類(lèi)由于對(duì)話(huà)框是一個(gè)特殊的窗口,所以該類(lèi)是從CWnd類(lèi)中派生出來(lái)的。對(duì)話(huà)框子層次結(jié)構(gòu)包括通用對(duì)話(huà)框類(lèi)CDialog以及支持文件選擇、顏色選擇、字體選擇、打印、替換文本的公共對(duì)話(huà)框子類(lèi)。153.菜單類(lèi):CMenu類(lèi)該類(lèi)是CObject類(lèi)的子類(lèi),用于管5.控件類(lèi)控件子層次結(jié)構(gòu)包括若干類(lèi),使用這些類(lèi)可建立靜態(tài)文本、命令按鈕、位圖按鈕、列表框、組合框、滾動(dòng)條、編輯框等。這些直觀控件為Windows應(yīng)用程序提供了各種輸入和顯示界面。6.控件條類(lèi):CControlBar類(lèi)控件條子層次結(jié)構(gòu)為工具條、狀態(tài)條、對(duì)話(huà)條和分割窗口建立模型。該類(lèi)是CToolBar、CStatusBar、CDialogBar的基類(lèi),負(fù)責(zé)管理工具條、狀態(tài)條、對(duì)話(huà)條的一些成員函數(shù)。控件條指的是連接在主窗口框架的頂部或底部的小窗口165.控件類(lèi)控件子層次結(jié)構(gòu)包括若干類(lèi),使用這些類(lèi)可建立7.繪畫(huà)對(duì)象類(lèi):CGdiObject類(lèi)圖形繪畫(huà)對(duì)象子層次結(jié)構(gòu)以CGdiObject類(lèi)為根類(lèi),可用于建立繪畫(huà)對(duì)象模型,如畫(huà)筆、刷子、字體、位圖、調(diào)色板等。8.設(shè)備描述表類(lèi):CDC類(lèi)該類(lèi)及其子類(lèi)支持設(shè)備描述表對(duì)象,是CObject類(lèi)的子類(lèi)。CDC類(lèi)是一個(gè)較大的類(lèi),包括許多成員函數(shù),如映射函數(shù)、繪畫(huà)工具函數(shù)、區(qū)域函數(shù)等,通過(guò)CDC對(duì)象的成員函數(shù)可以完成所有的繪畫(huà)工作177.繪畫(huà)對(duì)象類(lèi):CGdiObject類(lèi)圖形繪畫(huà)對(duì)象子層次結(jié)構(gòu)8.2.5通用類(lèi)
此類(lèi)提供了許多通用服務(wù),例如文件I/O、診斷和異常處理等,此外還包括如數(shù)組和列表等存放數(shù)據(jù)集的類(lèi)1.文件類(lèi):CFile類(lèi)和CArchive類(lèi)用以編寫(xiě)輸入輸出處理函數(shù)2.異常類(lèi):CException類(lèi)是所有異常情況的基類(lèi)。不能直接建立CException對(duì)象,只能建立派生類(lèi)的對(duì)象,用派生類(lèi)來(lái)捕獲指定的異常情況3.模板收集類(lèi)這些類(lèi)可以將多種對(duì)象存放到數(shù)組、列表和“映射”中。但這些收集類(lèi)是模板,它們的參數(shù)確定了存放在集合中的對(duì)象類(lèi)型。188.2.5通用類(lèi)此類(lèi)提供了許多通用服務(wù),例如文件I/O、CException的派生類(lèi)如下。CNotSupportedException:不支持服務(wù)異常CMemoryException:內(nèi)存異常CFileException:文件異常CResourceException:資源異常COleException:OLE異常CArchiveException:檔案異常CDaoException:基于DAO的數(shù)據(jù)庫(kù)類(lèi)異常CDBException:數(shù)據(jù)庫(kù)類(lèi)異常CUserException:終端用戶(hù)操作異常19CException的派生類(lèi)如下。19產(chǎn)生異常的原因描述將儲(chǔ)存在異常對(duì)象的m_cause數(shù)據(jù)成員中。例如CArchiveException類(lèi)的m_cause數(shù)據(jù)成員的可能值如下:badClass:不能讀錯(cuò)誤對(duì)象類(lèi)型中的內(nèi)容badIndex:無(wú)效文件格式badSchema:無(wú)效對(duì)象版本endOfFile:到達(dá)文件尾Generic:不明異常None:無(wú)異常readOnly:試圖向只讀文件進(jìn)行寫(xiě)操作writeOnly:試圖向只寫(xiě)文件進(jìn)行讀操作20產(chǎn)生異常的原因描述將儲(chǔ)存在異常對(duì)象的m_cause數(shù)據(jù)成員中8.2.6OLE類(lèi)
對(duì)象連接與嵌入子層次結(jié)構(gòu)為支持OLE提供了9個(gè)類(lèi)普通類(lèi)COleDocuemntCOleItemCOleException客戶(hù)類(lèi)COleClientDocCOleClientItem服務(wù)器類(lèi)COleServerCOleTemplateCOleServerDocCOleServerItem218.2.6OLE類(lèi)對(duì)象連接與嵌入子層次結(jié)構(gòu)為支持OLE提8.2.7ODBC數(shù)據(jù)庫(kù)類(lèi)
數(shù)據(jù)庫(kù)類(lèi)CDatabase:封裝對(duì)數(shù)據(jù)源的連接,通過(guò)此連接應(yīng)用程序可在該數(shù)據(jù)源上進(jìn)行操作CRecordset:封裝了從數(shù)據(jù)源選出的記錄這些類(lèi)面向ODBC且封裝了ODBCAPI228.2.7ODBC數(shù)據(jù)庫(kù)類(lèi)數(shù)據(jù)庫(kù)類(lèi)CDatabase:CRecordView:由CFormView派生,該類(lèi)將記錄集對(duì)象連接到顯示當(dāng)前記錄的字段值的一個(gè)表單視圖來(lái)簡(jiǎn)化操作。CFieldExchange:提供上下文信息,支持在字段數(shù)據(jù)成員、記錄對(duì)象的參數(shù)數(shù)據(jù)成員及數(shù)據(jù)源上的對(duì)應(yīng)列表之間進(jìn)行數(shù)據(jù)交換CLongBinary:封裝一存儲(chǔ)句柄,用于存儲(chǔ)二進(jìn)制的對(duì)象,例如位圖等CDBException:記錄數(shù)據(jù)存取處理過(guò)程中的失敗產(chǎn)生的異常常見(jiàn)數(shù)據(jù)庫(kù)類(lèi)23CRecordView:由CFormView派生,該類(lèi)將記錄8.3MFC中全局函數(shù)和全局變量以Afx為前綴的函數(shù)(數(shù)據(jù)庫(kù)類(lèi)函數(shù)和DDX函數(shù)除外)和變量,在目前的版本中,都表示全局函數(shù)或全局變量。
AfxAbort: 無(wú)條件終止一個(gè)應(yīng)用程序AfxBeginThread: 創(chuàng)建一個(gè)新線(xiàn)程并執(zhí)行它AfxEndThread: 終止當(dāng)前正在執(zhí)行的線(xiàn)程AfxFormatString: 格式化字符串AfxMessageBox: 顯示一個(gè)Windows消息框AfxGetApp: 返回當(dāng)前應(yīng)用程序?qū)ο蟮闹羔楢fxGetInstanceHandle:返回標(biāo)識(shí)當(dāng)前應(yīng)用程序?qū)ο蟮木浔鶤fxRegisterWndClass:注冊(cè)用于創(chuàng)建Windows窗口的窗口類(lèi)常見(jiàn)全局函數(shù)248.3MFC中全局函數(shù)和全局變量以Afx為前綴的函數(shù)(數(shù)據(jù)8.4應(yīng)用程序向?qū)?/p>
258.4應(yīng)用程序向?qū)?52626272728282929303031313232第8章MFC基礎(chǔ)知識(shí)33第8章MFC基礎(chǔ)知識(shí)18.1MFC概述
MFC是用來(lái)編寫(xiě)Windows應(yīng)用程序的C++類(lèi)集,該類(lèi)集以層次結(jié)構(gòu)組織起來(lái),其中封裝了大部分WindowsAPI函數(shù)和Windows控件,它所包含的功能涉及到整個(gè)Windows操作系統(tǒng)。MFC不僅為用戶(hù)提供了Windows圖形環(huán)境下應(yīng)用程序的框架,而且還提供了創(chuàng)建應(yīng)用程序的組件。348.1MFC概述MFC是用來(lái)編寫(xiě)WindowsMFC還很好地保持了程序的向下兼容性是用來(lái)編寫(xiě)Windows應(yīng)用程序的C++類(lèi)集以層次結(jié)構(gòu)組織封裝了大部分API函數(shù)提供了圖形環(huán)境下應(yīng)用程序的框架提供了創(chuàng)建應(yīng)用程序的組件提供了大量的基類(lèi)供程序員根據(jù)不同的應(yīng)用環(huán)境進(jìn)行擴(kuò)充允許在編程過(guò)程中自定義和擴(kuò)展應(yīng)用程序中的類(lèi)較好的移植性,可移植于眾多的平臺(tái)MFC35MFC還很好地保持了程序的向下兼容性是用來(lái)編寫(xiě)WindowsMFC1.0&MSC/C++7.0應(yīng)用程序中非圖形部分的類(lèi)GUI功能的Windows相關(guān)類(lèi)MFC2.0&MSVC++1.0在1.0基礎(chǔ)上增添了一些應(yīng)用程序MFC3.0&VC++2.0增添了對(duì)開(kāi)發(fā)32位應(yīng)用程序的支持MFC2.0&MSVC++1.5添加了ODBC類(lèi),并且還支持OLE的性能MFC4.0包含了在Win95和N中大多數(shù)新的公共控件和DAO、MAPI增強(qiáng)了對(duì)數(shù)據(jù)庫(kù)應(yīng)用程序的支持利用DAO類(lèi)通過(guò)編程語(yǔ)言來(lái)訪(fǎng)問(wèn)、操縱和管理數(shù)據(jù)庫(kù)對(duì)Internet也提供了強(qiáng)有力的支持MFC4.2136MFC1.0&MSC/C++7.0應(yīng)用程序中非圖形部分MFC5.0增強(qiáng)了對(duì)數(shù)據(jù)庫(kù)和Internet的支持,可使用ODBC類(lèi)和ODBC驅(qū)動(dòng)程序來(lái)訪(fǎng)問(wèn)提供ODBC支持的數(shù)據(jù)庫(kù)中的數(shù)據(jù);可以通過(guò)數(shù)據(jù)訪(fǎng)問(wèn)對(duì)象(DAO)類(lèi)通過(guò)編程語(yǔ)言來(lái)訪(fǎng)問(wèn)和操縱數(shù)據(jù)庫(kù)中的數(shù)據(jù)并管理數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)對(duì)象與結(jié)構(gòu)。這些支持主要包括以下幾個(gè)部分:Win32InternetAPI使Internet成為應(yīng)用程序的一部分并簡(jiǎn)化了對(duì)Internet服務(wù)的訪(fǎng)問(wèn)Activex文檔可以顯示在整個(gè)Web瀏覽器或OLE容器的整個(gè)客戶(hù)窗口中
Activex控件可以用在Internet和桌面應(yīng)用程序中可以使用CHttpServer、CHttpFilter、ChttpServerContext和CHttpFilterContext類(lèi)來(lái)建立動(dòng)態(tài)DLL,以便為Web頁(yè)面增添功能37MFC5.0增強(qiáng)了對(duì)數(shù)據(jù)庫(kù)和Internet的支持,可使MFC6.0中引進(jìn)了新的功能:提出了活動(dòng)文檔容器來(lái)管理不同類(lèi)型的文檔,并通過(guò)引入類(lèi)COleDocObjectItem來(lái)加以實(shí)現(xiàn)。同時(shí)在應(yīng)用程序向?qū)е幸布尤肓藢?duì)這一新特性的支持。加入了對(duì)動(dòng)態(tài)HTML技術(shù)的支持,通過(guò)引入一個(gè)新類(lèi)CHtmlView,使程序員開(kāi)發(fā)的應(yīng)用程序可以瀏覽并顯示用動(dòng)態(tài)HTML技術(shù)開(kāi)發(fā)的HTML文檔。類(lèi)CHtmlView中封裝了許多瀏覽器的特征,包括瀏覽器在歷史記錄、書(shū)簽和安全等方面的特征都被封裝進(jìn)了類(lèi)CHtmlView。擴(kuò)展了對(duì)公共控件的支持,如時(shí)間控鍵、IP地址控鍵和日期控鍵等。38MFC6.0中引進(jìn)了新的功能:68.2MFC類(lèi)的組織結(jié)構(gòu)及主要的類(lèi)的簡(jiǎn)介
398.2MFC類(lèi)的組織結(jié)構(gòu)及主要的類(lèi)的簡(jiǎn)介78.2.1MFC類(lèi)的組織結(jié)構(gòu)
MFC庫(kù)中的類(lèi)按層次關(guān)系劃分類(lèi):(1)根類(lèi):CObject(2)應(yīng)用程序體系結(jié)構(gòu)類(lèi)(3)窗口、對(duì)話(huà)框和控件類(lèi)(4)繪圖和打印類(lèi)(5)簡(jiǎn)單數(shù)據(jù)類(lèi)型類(lèi)(6)數(shù)組、列表和映射類(lèi)(7)文件和數(shù)據(jù)庫(kù)類(lèi)(8)Internet和網(wǎng)絡(luò)工作類(lèi)(9)OLE類(lèi)(10)調(diào)試和異常類(lèi)408.2.1MFC類(lèi)的組織結(jié)構(gòu)MFC庫(kù)中的類(lèi)按層次關(guān)系劃分8.2.2根類(lèi)--CObjec
MFC中多數(shù)類(lèi)和用戶(hù)自定義子類(lèi)的根類(lèi),是抽象基類(lèi)。它提供了許多編程所需的公共操作。對(duì)象的建立對(duì)象的刪除運(yùn)行時(shí)信息對(duì)象診斷輸出串行化支持應(yīng)用程序和線(xiàn)程支持類(lèi)命令相關(guān)類(lèi)文檔類(lèi)文檔模板類(lèi)視類(lèi)(體系結(jié)構(gòu))框架窗口(體系結(jié)構(gòu))應(yīng)用程序體系結(jié)構(gòu)類(lèi)窗口、對(duì)話(huà)框和控件類(lèi)框架窗口類(lèi)(窗口)視類(lèi)(窗口)對(duì)話(huà)框類(lèi)控件條類(lèi)繪圖和打印類(lèi)輸出(設(shè)備相關(guān))類(lèi)繪圖工具類(lèi)簡(jiǎn)單數(shù)據(jù)類(lèi)型類(lèi)數(shù)組、列表和映射類(lèi)數(shù)組類(lèi)列表類(lèi)映射類(lèi)418.2.2根類(lèi)--CObjecMFC中多數(shù)類(lèi)和用戶(hù)自文件和數(shù)據(jù)庫(kù)類(lèi)文件I/O類(lèi)DAO類(lèi)ODBC類(lèi)Internet和網(wǎng)絡(luò)工作類(lèi)LSAPI類(lèi)WindowsSocket類(lèi)Win32Internet類(lèi)OLE類(lèi)OLE容器類(lèi)OLE服務(wù)器類(lèi)OLE拖放和數(shù)據(jù)傳輸類(lèi)OLE普通對(duì)話(huà)框類(lèi)OLE動(dòng)畫(huà)類(lèi)OLE動(dòng)畫(huà)類(lèi)OLE控件類(lèi)活動(dòng)文檔類(lèi)其他文檔類(lèi)調(diào)試和異常類(lèi)調(diào)試支持類(lèi)異常類(lèi)42文件和數(shù)據(jù)庫(kù)類(lèi)文件I/O類(lèi)Internet和網(wǎng)絡(luò)工作類(lèi)LSA8.2.3應(yīng)用程序體系結(jié)構(gòu)類(lèi)
1.命令相關(guān)類(lèi):CCmdTarget類(lèi)該類(lèi)是CObject的子類(lèi),它是MFC庫(kù)中所有具有消息映射屬性的基類(lèi)。消息映射規(guī)定了當(dāng)一對(duì)象接收到消息命令時(shí),應(yīng)調(diào)用哪一個(gè)函數(shù)對(duì)該消息進(jìn)行處理應(yīng)用程序體系結(jié)構(gòu)類(lèi)1.命令相關(guān)類(lèi)2.窗口應(yīng)用程序類(lèi)3.文檔/視類(lèi)4.線(xiàn)程基類(lèi)編寫(xiě)程序的任務(wù)是填充框架,添加應(yīng)用程序?qū)S玫墓δ苡糜跇?gòu)造應(yīng)用程序框架的結(jié)構(gòu),提供多數(shù)應(yīng)用程序公用的功能2.線(xiàn)程基類(lèi):CWinThread類(lèi)所有線(xiàn)程的基類(lèi),可直接使用。CWinApp類(lèi)就是從CWinThread類(lèi)中派生出來(lái)的438.2.3應(yīng)用程序體系結(jié)構(gòu)類(lèi)1.命令相關(guān)類(lèi):CCmdTar4.文檔/視類(lèi)文檔對(duì)象由文檔模板對(duì)象創(chuàng)建,管理應(yīng)用程序的數(shù)據(jù)。視對(duì)象表示一個(gè)窗口的客戶(hù)區(qū),顯示文檔數(shù)據(jù)并允許用戶(hù)與之交互3.窗口應(yīng)用程序類(lèi):CWinApp類(lèi)每個(gè)應(yīng)用程序有且只有一個(gè)應(yīng)用程序?qū)ο?,在運(yùn)行程序中該對(duì)象與其它對(duì)象相互協(xié)調(diào),該對(duì)象從CWinApp類(lèi)中派生出來(lái)。CWinApp類(lèi)封裝了初始化、運(yùn)行、終止應(yīng)用程序的代碼。444.文檔/視類(lèi)文檔對(duì)象由文檔模板對(duì)象創(chuàng)建,管理應(yīng)用程在CWinApp中定義的部分函數(shù)的功能有時(shí)也可以通過(guò)MFC提供的全局函數(shù)來(lái)實(shí)現(xiàn),這些全局函數(shù)一般都以Afx為前綴。例如調(diào)用AfxMessageBox函數(shù)將彈出一個(gè)消息框,其功能與CWinApp中的DoMessageBox相同。AfxMessageBox原型如下:intAfxMessageBox(LPCTSTRlpszText,UINTnType=MB_OK,UINTnIDHelp=0)45在CWinApp中定義的部分函數(shù)的功能有時(shí)也可以通過(guò)MFC提8.2.4可視對(duì)象類(lèi)
2.視類(lèi):CView類(lèi)該類(lèi)表示框架窗口的客戶(hù)區(qū)和顯示文檔數(shù)據(jù)并接收輸入的客戶(hù)區(qū),其派生類(lèi)主要有如下幾種:CScrollView:具有滾動(dòng)功能的視的基類(lèi)CFormView:其布局在對(duì)話(huà)資源中定義的滾動(dòng)視CEditView:具有文本編輯、查找、替換和滾動(dòng)功能的視1.窗口類(lèi):CWnd類(lèi)Cwnd提供了MFC中所有窗口類(lèi)的基本功能,是CCmdTarget類(lèi)的子類(lèi)創(chuàng)建Windows窗口要分兩步進(jìn)行引入構(gòu)造函數(shù),構(gòu)造一個(gè)CWnd對(duì)象調(diào)用Create建立Windows窗口,并將它連到CWnd對(duì)象上468.2.4可視對(duì)象類(lèi)2.視類(lèi):CView類(lèi)該類(lèi)表示框架窗3.菜單類(lèi):CMenu類(lèi)該類(lèi)是CObject類(lèi)的子類(lèi),用于管理菜單。它是一個(gè)WindowsHMenu的封裝,提供了與窗口有關(guān)的菜單資源建立、修改、跟蹤及刪除的成員函數(shù)。4.對(duì)話(huà)框類(lèi):CDialog類(lèi)由于對(duì)話(huà)框是一個(gè)特殊的窗口,所以該類(lèi)是從CWnd類(lèi)中派生出來(lái)的。對(duì)話(huà)框子層次結(jié)構(gòu)包括通用對(duì)話(huà)框類(lèi)CDialog以及支持文件選擇、顏色選擇、字體選擇、打印、替換文本的公共對(duì)話(huà)框子類(lèi)。473.菜單類(lèi):CMenu類(lèi)該類(lèi)是CObject類(lèi)的子類(lèi),用于管5.控件類(lèi)控件子層次結(jié)構(gòu)包括若干類(lèi),使用這些類(lèi)可建立靜態(tài)文本、命令按鈕、位圖按鈕、列表框、組合框、滾動(dòng)條、編輯框等。這些直觀控件為Windows應(yīng)用程序提供了各種輸入和顯示界面。6.控件條類(lèi):CControlBar類(lèi)控件條子層次結(jié)構(gòu)為工具條、狀態(tài)條、對(duì)話(huà)條和分割窗口建立模型。該類(lèi)是CToolBar、CStatusBar、CDialogBar的基類(lèi),負(fù)責(zé)管理工具條、狀態(tài)條、對(duì)話(huà)條的一些成員函數(shù)。控件條指的是連接在主窗口框架的頂部或底部的小窗口485.控件類(lèi)控件子層次結(jié)構(gòu)包括若干類(lèi),使用這些類(lèi)可建立7.繪畫(huà)對(duì)象類(lèi):CGdiObject類(lèi)圖形繪畫(huà)對(duì)象子層次結(jié)構(gòu)以CGdiObject類(lèi)為根類(lèi),可用于建立繪畫(huà)對(duì)象模型,如畫(huà)筆、刷子、字體、位圖、調(diào)色板等。8.設(shè)備描述表類(lèi):CDC類(lèi)該類(lèi)及其子類(lèi)支持設(shè)備描述表對(duì)象,是CObject類(lèi)的子類(lèi)。CDC類(lèi)是一個(gè)較大的類(lèi),包括許多成員函數(shù),如映射函數(shù)、繪畫(huà)工具函數(shù)、區(qū)域函數(shù)等,通過(guò)CDC對(duì)象的成員函數(shù)可以完成所有的繪畫(huà)工作497.繪畫(huà)對(duì)象類(lèi):CGdiObject類(lèi)圖形繪畫(huà)對(duì)象子層次結(jié)構(gòu)8.2.5通用類(lèi)
此類(lèi)提供了許多通用服務(wù),例如文件I/O、診斷和異常處理等,此外還包括如數(shù)組和列表等存放數(shù)據(jù)集的類(lèi)1.文件類(lèi):CFile類(lèi)和CArchive類(lèi)用以編寫(xiě)輸入輸出處理函數(shù)2.異常類(lèi):CException類(lèi)是所有異常情況的基類(lèi)。不能直接建立CException對(duì)象,只能建立派生類(lèi)的對(duì)象,用派生類(lèi)來(lái)捕獲指定的異常情況3.模板收集類(lèi)這些類(lèi)可以將多種對(duì)象存放到數(shù)組、列表和“映射”中。但這些收集類(lèi)是模板,它們的參數(shù)確定了存放在集合中的對(duì)象類(lèi)型。508.2.5通用類(lèi)此類(lèi)提供了許多通用服務(wù),例如文件I/O、CException的派生類(lèi)如下。CNotSupportedException:不支持服務(wù)異常CMemoryException:內(nèi)存異常CFileException:文件異常CResourceException:資源異常COleException:OLE異常CArchiveException:檔案異常CDaoException:基于DAO的數(shù)據(jù)庫(kù)類(lèi)異常CDBException:數(shù)據(jù)庫(kù)類(lèi)異常CUserException:終端用戶(hù)操作異常51CException的派生類(lèi)如下。19產(chǎn)生異常的原因描述將儲(chǔ)存在異常對(duì)象的m_cause數(shù)據(jù)成員中。例如CArchiveException類(lèi)的m_cause數(shù)據(jù)成員的可能值如下:badClass:不能讀錯(cuò)誤對(duì)象類(lèi)型中的內(nèi)容badIndex:無(wú)效文件格式badSch
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年中國(guó)大型振動(dòng)試驗(yàn)機(jī)行業(yè)市場(chǎng)分析報(bào)告
- 2024-2030年中國(guó)即時(shí)通訊(im)行業(yè)競(jìng)爭(zhēng)格局及投資創(chuàng)新模式分析報(bào)告
- 眉山職業(yè)技術(shù)學(xué)院《電子商務(wù)概論》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年度食品代加工與產(chǎn)品質(zhì)量追溯協(xié)議3篇
- 2024年標(biāo)準(zhǔn)化物業(yè)租賃協(xié)議模板匯編版B版
- 2024年物聯(lián)網(wǎng)農(nóng)業(yè)技術(shù)開(kāi)發(fā)與合作合同
- 2024年標(biāo)準(zhǔn)股權(quán)轉(zhuǎn)讓協(xié)議一
- 馬鞍山師范高等專(zhuān)科學(xué)?!冬F(xiàn)場(chǎng)節(jié)目主持實(shí)踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年城市綜合體土地房屋股權(quán)轉(zhuǎn)讓與建設(shè)合同范本3篇
- 2024年度特色民宿商品房承包銷(xiāo)售合同3篇
- YY/T 0251-1997微量青霉素試驗(yàn)方法
- YC/T 559-2018煙草特征性成分生物堿的測(cè)定氣相色譜-質(zhì)譜聯(lián)用法和氣相色譜-串聯(lián)質(zhì)譜法
- GB/T 29309-2012電工電子產(chǎn)品加速應(yīng)力試驗(yàn)規(guī)程高加速壽命試驗(yàn)導(dǎo)則
- 齊魯工業(yè)大學(xué)信息管理學(xué)成考復(fù)習(xí)資料
- 公務(wù)員面試-自我認(rèn)知與職位匹配課件
- 中頻電治療儀操作培訓(xùn)課件
- 柔弱的人課文課件
- 動(dòng)物寄生蟲(chóng)病學(xué)課件
- 電梯曳引系統(tǒng)設(shè)計(jì)-畢業(yè)設(shè)計(jì)
- 三度房室傳導(dǎo)阻滯護(hù)理查房課件
- 講課比賽精品PPT-全概率公式貝葉斯公式-概率論與數(shù)理統(tǒng)計(jì)
評(píng)論
0/150
提交評(píng)論