董振華
(吉林司法警官職業(yè)學(xué)院,長(zhǎng)春130062)
MFC,是MicrosoftFoundationClass的英文縮寫(xiě)或簡(jiǎn)稱(chēng),它的中文含義是微軟基礎(chǔ)類(lèi)。它是微軟公司自主研發(fā)的一套能夠在開(kāi)發(fā)在Windows操作系統(tǒng)上運(yùn)行的平臺(tái)軟件的類(lèi)庫(kù)。MFC封裝了大部分的Windows應(yīng)用程序開(kāi)發(fā)接口函數(shù),換言之,它是微軟公司開(kāi)發(fā)的一個(gè)軟件平臺(tái)研發(fā)的集成開(kāi)發(fā)環(huán)境,可以使用MFC進(jìn)行編譯、調(diào)試,而不需要使用其他多種工具互相配合操作,因此它具有極大的便利性和靈活性。它是一套能夠?qū)?shù)據(jù)管理和顯示相分離開(kāi)來(lái)的應(yīng)用框架,在C++編程語(yǔ)言里如果新建一個(gè)MFC工程的話(huà),開(kāi)發(fā)環(huán)境或者說(shuō)是軟件會(huì)自動(dòng)生成許多不同格式的文件,有點(diǎn)類(lèi)似于JAVA語(yǔ)言的三大框架(Struts、Hibernate和Spring)。它也是一種面向?qū)ο箢?lèi)型的經(jīng)過(guò)封裝了的C++語(yǔ)言類(lèi)庫(kù)。一般來(lái)說(shuō),MFC通常包括兩部分的內(nèi)容,第一部分就是常見(jiàn)的或者常用的C++類(lèi)庫(kù),它被認(rèn)為是MFC類(lèi)庫(kù)的主體部分,第二部分就是在MFC中已經(jīng)定義好的各種全局變量、全局函數(shù)以及宏等,它被視作MFC編程類(lèi)庫(kù)的輔助部分。雖然這兩部分有所分工,但實(shí)際上它們作為MFC重要的組成部分,是在Windows操作平臺(tái)上進(jìn)行軟件開(kāi)發(fā)所必不可少的組塊。
MFC利用面向?qū)ο蟮脑戆褟?fù)雜的API有邏輯地組織起來(lái),使得MFC具有面向?qū)ο缶幊陶Z(yǔ)言的所有基本性質(zhì),即繼承化、封裝化、抽象化、模塊化、多態(tài)性。MFCObject和Windows Object是不一樣的,但兩者之間的聯(lián)系緊密。MFCObject相對(duì)系統(tǒng)的其他進(jìn)程來(lái)說(shuō)是不可用或者是不可見(jiàn)的,但是Windows Object不同于它,一旦被創(chuàng)建之后,它的句柄是整個(gè)Windows系統(tǒng)全局的,換句話(huà)說(shuō)就是整個(gè)系統(tǒng)或者程序都能對(duì)其進(jìn)行調(diào)用,其他進(jìn)程可以使用一些句柄。最典型的就是,一個(gè)進(jìn)程窗口句柄可以被另一進(jìn)程所獲取,并同時(shí)能夠給該窗口發(fā)送一些消息,使得調(diào)用MFCObject的成員函數(shù)能夠創(chuàng)建相應(yīng)的WindowsObject,因而也就使得MFC的句柄變量存儲(chǔ)的就是一個(gè)有效句柄。除了上述這些,MFC類(lèi)庫(kù)還有著其獨(dú)特有的文檔、試圖體系基本結(jié)構(gòu)以及包含根類(lèi)、應(yīng)用程度類(lèi)和命令發(fā)送類(lèi)三者的分層結(jié)構(gòu)。因此,它除了具有面向?qū)ο缶幊陶Z(yǔ)言的基本性質(zhì)之外,還有著與WindowsObject的千絲萬(wàn)縷的聯(lián)系,還具有其特有的文檔、試圖體系基本結(jié)構(gòu)以及分層結(jié)構(gòu)。
作為重要的系統(tǒng)開(kāi)發(fā)環(huán)境和工具,ObjectARX能夠與MFC充分結(jié)合起來(lái)。編程人員可以充分利用ObjectARX對(duì)編程環(huán)境的支持,選用常見(jiàn)的而向?qū)ο蟮膽?yīng)用程序。具體地說(shuō),ARX應(yīng)用程序經(jīng)過(guò)處理之后將不會(huì)再是一個(gè)獨(dú)立的應(yīng)用進(jìn)程,它將成為一個(gè)動(dòng)態(tài)化的鏈接庫(kù)。ARX程序能夠與AutoCAD在同一地址空間上同步運(yùn)行,也就是ARX能夠直接把AutoCAD的內(nèi)核代碼進(jìn)行利用,進(jìn)而可以直接訪問(wèn)無(wú)須其他操作AutoCAD的圖形系統(tǒng)、基本數(shù)據(jù)庫(kù)及幾何基本常用的造型核心數(shù)據(jù)。在運(yùn)行期間,ARX能夠?qū)崟r(shí)擴(kuò)展AutoCAD所具有的功能及其基本類(lèi),建立其與AutoCAD與固有命令操作方式不太相同的命令新的命令形式。由于采用了與第一代和第二代開(kāi)發(fā)工具完全不同的運(yùn)行機(jī)制,ARX應(yīng)用程序在運(yùn)行速度和程序功能上都較前者有著巨大的提升。顯得更重要的是,開(kāi)發(fā)ARX應(yīng)用程序還可以充分利用Windows平臺(tái)開(kāi)發(fā)運(yùn)行的資源、微軟的基本類(lèi)庫(kù)MFC( MicrosoftFoundationClass)。它是先進(jìn)的C++可視化集成后的編程環(huán)境和工具,能夠快捷、方便、高效地設(shè)計(jì)具有Windows典型平臺(tái)風(fēng)格的計(jì)算機(jī)輔助設(shè)計(jì)類(lèi)應(yīng)用程序。此外,應(yīng)用MFC可以簡(jiǎn)化對(duì)應(yīng)用程序的編寫(xiě)方式,同時(shí)還能減少編程開(kāi)發(fā)者的代碼編寫(xiě)工作量。事實(shí)上,由于windows操作系統(tǒng)平臺(tái)有著Microsoft公司強(qiáng)大技術(shù)實(shí)力的支持,使得MFC類(lèi)庫(kù)幾乎能夠提供所有對(duì)通用計(jì)算機(jī)IT技術(shù)的平臺(tái)支持,例如對(duì)常見(jiàn)的數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)、Web功能和多媒體的基本支持。因此,在某種程度上可以說(shuō)CAD軟件開(kāi)發(fā)者的唯一最好的選擇就是用MFC開(kāi)發(fā)Windows應(yīng)用程序進(jìn)行二次開(kāi)發(fā)。
滑動(dòng)軸承軟件被認(rèn)為是一個(gè)典型的多視圖單文檔類(lèi)應(yīng)用程序。該應(yīng)用程序的主要計(jì)算過(guò)程是利用了MFC面向?qū)ο蟮姆椒?,通過(guò)將以往編制的各種常用的計(jì)算程序進(jìn)行集成來(lái)實(shí)現(xiàn)的,它的設(shè)計(jì)風(fēng)格或多或少也參照了當(dāng)前比較流行的類(lèi)似QQ抽屜菜單效果。這個(gè)應(yīng)用程序充分利用了MFC面向?qū)ο蟮脑O(shè)計(jì)思想,按照所要求實(shí)現(xiàn)的功能來(lái)設(shè)計(jì)基本類(lèi)的結(jié)構(gòu),當(dāng)然,計(jì)算各種軸承相關(guān)的靜、動(dòng)特性系數(shù)時(shí),所采用的相應(yīng)的獨(dú)立計(jì)算程序是用有限元法編寫(xiě)的。因此,為了更好的在MFC界面設(shè)計(jì)中將這些獨(dú)立的程序進(jìn)行應(yīng)用,以便在實(shí)際中能夠?qū)⑵溆糜诟鞣N軸承形式的計(jì)算,這就無(wú)疑需要按照不同軸承的類(lèi)別將這些應(yīng)用程序簡(jiǎn)單的封裝為各種不同的類(lèi),進(jìn)一步通過(guò)定義不同類(lèi)別對(duì)象來(lái)完成不同軸承類(lèi)別的基本計(jì)算過(guò)程,這就是面向?qū)ο筮@一常用的設(shè)計(jì)思想的精髓。另外,由于滑動(dòng)軸承系統(tǒng)的開(kāi)發(fā)所采用得面向?qū)ο蠹夹g(shù)是具有開(kāi)放式特性的,因此在一定程度上該應(yīng)用程序比較容易進(jìn)行擴(kuò)充,這就為后續(xù)的二次開(kāi)發(fā)奠定了良好的基礎(chǔ),為以后節(jié)省成本開(kāi)支埋下了伏筆。
目前MFC技術(shù)存在著一些缺陷,比如說(shuō)靈活性不夠。解決這一類(lèi)缺陷的基本做法是不斷更新MFC類(lèi)庫(kù),將越來(lái)越多的應(yīng)用廣泛裝到MFC類(lèi)庫(kù)中,并及時(shí)提供相應(yīng)的最新下載版本。MFC類(lèi)庫(kù)還存在所支持平臺(tái)單一的不足,不能夠像JAVA那樣實(shí)現(xiàn)跨平臺(tái)、多平臺(tái)的應(yīng)用。對(duì)于這類(lèi)基本缺陷,最好的解決辦法是實(shí)現(xiàn)MFC的跨平臺(tái)應(yīng)用。只有解決了上述常見(jiàn)弊端,MFC在軟件開(kāi)發(fā)領(lǐng)域中的應(yīng)用將會(huì)越來(lái)越廣泛,相應(yīng)的平臺(tái)開(kāi)發(fā)者才能取得更多的收益。
MFC是重要的集成化編程開(kāi)發(fā)環(huán)境或者工具,它在實(shí)際開(kāi)發(fā)中應(yīng)用比較寬泛。但是它自身也存在著些許不足,如果MFC平臺(tái)開(kāi)發(fā)者能夠及時(shí)解決這些缺陷或者不足的話(huà),相信未來(lái)MFC在軟件開(kāi)發(fā)領(lǐng)域的路途將會(huì)是一片坦蕩。
[1]車(chē)忠志,孫雪雁.MFC應(yīng)用程序基本框架分析[J].農(nóng)業(yè)網(wǎng)絡(luò)信息,2012,(09): 145-147.
[2]劉連喜,徐惠民.MFC框架中的設(shè)計(jì)模式分析[J].計(jì)算機(jī)應(yīng)用與軟件,2013,22(09):50-52.