MFC
Microsoft Foundation Classes, 簡稱MFC,是一個微軟公司提供的類別庫(class libraries),以C++類的形式封裝了Windows的API,並且包含一個應用程式框架,以減少應用程式開發人員的工作量。其中包含的類包含大量Windows控制代碼封裝類和很多Windows的內建控制項和零件的封裝類。
發展
MFC是在1992年隨微軟的Microsoft C/C++ 7.0編譯器發布的,用於面向16位元Windows的軟體開發。起初,MFC是作為一個應用程式框架開發的,所以定名為Application FrameworkX (AFX)。[1]
Borland幾乎同時發布了面向Turbo C編譯器的OWL,並且在一開始比MFC更具有市場佔有率,但是在Borland發布了一個不向下相容的應用程式框架之後,它喪失了很多市場佔有率;在Borland從微軟獲得發布MFC的授權之後它的市場佔有率進一步減少。
隨著Visual Basic和Visual Studio .NET的發布,曾經一度被微軟重點推薦的MFC被Visual Basic、C#、Windows Forms搶走了不少市場佔有率,但是MFC繼續在非托管軟體開發中佔據重要地位。在托管開發方面,MFC中也包括對Windows Forms和托管/非托管互操作的封裝。微軟計劃在Windows Vista(代號Longhorn)發布之後繼續在MFC中增加對Windows Vista API,以及Windows Presentation Framework (代號Avalon)的支援。在可見的未來,微軟對MFC的支援不會停止。
MFC的優點
MFC的主要優點是可以用物件導向的方法來叫用Windows API,以及應用程式開發的便捷。MFC將很多應用程式開發中常用的功能自動化,並且提供了文檔框架檢視結構和活動文檔這樣的便於自訂的應用程式框架。同時,在Visual C++內部也內建了很多對MFC的例如類精靈這樣的支援以減少軟體開發的時間,使用類精靈可以生成從hello world這樣的簡單程式到活動文檔伺服器這樣的複雜程式。MFC的訊息對映機制也避免了使用性能較低的龐大虛擬函式表。
MFC的缺點
雖然MFC的原始碼對用戶是完全開放的,但是MFC的一些封裝過程過於複雜,以致於新用戶很難迅速掌握MFC的應用程式框架,以及在偵錯中定位問題的位置。同時,很多MFC物件不是執行緒安全的,致使在跨執行緒存取MFC物件時需要編寫額外的代碼。另外,MFC的很多類依賴於應用程式精靈生成的代碼,使得在使用Visual C++中其他型式的應用程式精靈生成的專案中添加MFC支援的難度大大增加。
第三方支援
很多商用類別庫在MFC的基礎上進一步實作了皮膚、漸變風格、多頂層視窗程式、屬性列表等較受歡迎的功能;同時,在C++線上社區中,很大一部分開放的原始碼也是基於MFC的。