資源描述:
《MFC初級(jí)者的速成寶典》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、MFC編程(寫給MFC初級(jí)者的速成寶典)正文MFC編程1??微軟基礎(chǔ)類庫(kù)(MFC:MicrosoftFoundationClass)是微軟為Windows程序員提供的一個(gè)面向?qū)ο蟮腤indows編程接口,它大大簡(jiǎn)化了Windows編程工作。使用MFC類庫(kù)的好處是:首先,MFC提供了一個(gè)標(biāo)準(zhǔn)化的結(jié)構(gòu),這樣開發(fā)人員不必從頭設(shè)計(jì)創(chuàng)建和管理一個(gè)標(biāo)準(zhǔn)Windows應(yīng)用程序所需的程序,而是“站在巨人肩膀上”,從一個(gè)比較高的起點(diǎn)編程,故節(jié)省了大量的時(shí)間;其次,它提供了大量的代碼,指導(dǎo)用戶編程時(shí)實(shí)現(xiàn)某些技術(shù)和功能。??對(duì)用戶來說,用MFC開發(fā)的最終應(yīng)用程序具
2、有標(biāo)準(zhǔn)的、熟悉的Windows界面,這樣的應(yīng)用程序易學(xué)易用;另外,新的應(yīng)用程序還能立即支持所有標(biāo)準(zhǔn)Windows特性,而且是用普通的、明確定義的形式。事實(shí)上,也就是在Windows應(yīng)用程序界面基礎(chǔ)上定義了一種新的標(biāo)準(zhǔn)——MFC標(biāo)準(zhǔn)。??一、MFC類庫(kù)概念和組成??類庫(kù)是一個(gè)可以在應(yīng)用中使用的相互關(guān)聯(lián)的C++類的集合。Microsoft提供了一個(gè)基礎(chǔ)類庫(kù)MFC,其中包含用來開發(fā)C++和C++Windows應(yīng)用程序的一組類。基礎(chǔ)類庫(kù)的核心是以C++形式封裝了大部分的WindowsAPI。類庫(kù)表示窗口、對(duì)話框、設(shè)備上下文、公共GDI對(duì)象如畫筆、調(diào)色
3、板、控制框和其他標(biāo)準(zhǔn)的Windows部件。這些類提供了一個(gè)面向Windows中結(jié)構(gòu)的簡(jiǎn)單的C++成員函數(shù)的接口。??MFC可分為兩個(gè)主要部分:(1)基礎(chǔ)類(2)宏和全程函數(shù)。??1、MFC基礎(chǔ)類:MFC中的類按功能來分可劃分為以下幾類:??基類應(yīng)用程序框架類應(yīng)用程序類命令相關(guān)類文檔/視類??線程類可視對(duì)象類窗口類視類對(duì)話框類??屬性表控制類菜單類設(shè)備描述表繪畫對(duì)象類??通用類文件診斷異常收集??模板收集其他支持類??OLE2類OLE基類OLE可視編輯包裝程序類??OLE可視編輯服務(wù)器程序類OLE數(shù)據(jù)傳輸類OLE對(duì)話框類其他OLE類數(shù)據(jù)庫(kù)類??
4、2、宏和全局函數(shù):若某個(gè)函數(shù)或變量不是某個(gè)類的一個(gè)成員,那么它是一個(gè)全程函數(shù)或變量。Microsoft基本宏和全程函數(shù)提供以下功能:??數(shù)據(jù)類型運(yùn)行時(shí)刻對(duì)象類型服務(wù)診斷服務(wù)異常處理??CString格式化及信息框顯示消息映射應(yīng)用消息和管理對(duì)象連接和嵌入(OLE)服務(wù)??標(biāo)準(zhǔn)命令和WindowsIDs????3、約定:全程函數(shù)以“Afx”為前綴,所有全程變量都是以“afx”為前綴,宏不帶任何特別前綴,但是全部大寫。??常見的全局函數(shù)和宏有:AfxGetApp,AfxGetMainWnd,AfxMessageBox,DEBUG_NEW等,我們會(huì)在
5、后面的章節(jié)中用到并對(duì)它們進(jìn)行介紹。??從繼承關(guān)系來看,又可將MFC中的類分成兩大類:大多數(shù)的MFC類是從CObject繼承下來;另外一些類則不是從CObject類繼承下來,這些類包括:字符串類CString,日期時(shí)間類CTime,矩形類CRect,點(diǎn)CPoint等,它們提供程序輔助功能。??由于MFC中大部分類是從CObject繼承下來的,CObject類描述了幾乎所有的MFC中其他類的一些公共特性,因此我們有必要理解CObject類。??我們首先查看一下CObject類的定義,CObject類定義如下清單2.1所示:??清單2.1CObje
6、ct類的定義??//classCObjectistherootofallcompliant(順從的、適應(yīng)的)objects??classCObject??{??public:??//Objectmodel(types,destruction,allocation)??virtualCRuntimeClass*GetRuntimeClass()const;??virtual~CObject();//virtualdestructorsarenecessary??//Diagnostic(診斷的)allocations(配置)??void*PAS
7、CALoperatornew(size_tnSize);??void*PASCALoperatornew(size_t,void*p);??voidPASCALoperatordelete(void*p);??#ifdefined(_DEBUG)&&!defined(_AFX_NO_DEBUG_CRT)??//forfilename/linenumbertrackingusingDEBUG_NEW??void*PASCALoperatornew(size_tnSize,LPCSTRlpszFileName,intnLine);??#endif
8、??//Disablethecopyconstructorandassignmentbydefaultsoyouwillget??//compilererrorsi