A Microsoft Foundation Classes (MFC) csomag a Microsoft által kifejlesztett C++ könyvtár, amelynek célja, hogy megkönnyítse a GUI -alkalmazások fejlesztését a Microsoft Windows rendszerhez a könyvtárosztályok gazdag készletével.
Az MFC könyvtár fő versenytársához, a Borland VCL -hez hasonlóan megkönnyíti a GUI-val való munkát azáltal, hogy egy alkalmazási keretrendszert hoz létre – egy „csontváz” programot, amely automatikusan létrejön egy adott interfész-elrendezésnek megfelelően, és teljes mértékben átveszi a rutin műveleteket. karbantartás (ablakesemények feldolgozása, adatátvitel a belső elempufferek és programváltozók között stb.). Az alkalmazás keretrendszer létrehozása után a programozónak csak olyan helyeken kell megadnia a kódot, ahol speciális műveletekre van szükség. A keretrendszernek jól meghatározott szerkezettel kell rendelkeznie, ezért a Visual C++ varázslókat biztosít a létrehozásához és módosításához.
Ezenkívül az MFC objektumorientált burkolóréteget ( angol wrappers ) biztosít a Windows API számos funkciója felett , ami némileg kényelmesebbé teszi a velük való munkát. Ez a réteg sok, a rendszerbe épített objektumot (ablakok, widgetek , fájlok stb.) képvisel osztályok formájában, és ismét gondoskodik a rutin műveletekről, mint például a leírók bezárása és a memória lefoglalása/felszabadítása.
Az alkalmazáskód hozzáadása a keretrendszerhez kétféleképpen valósul meg. Az első az öröklési mechanizmust használja : a keretrendszer főbb programstruktúrái a könyvtárakból örökölt osztályok formájában jelennek meg. Ezek az osztályok számos virtuális függvényt biztosítanak , amelyeket a program bizonyos pontjain hívnak meg. A függvények újradefiniálásával (a legtöbb esetben meg kell hívni az alaposztály függvényét) a programozó a kódja ezeken a pontokon végrehajtást adhat hozzá.
A második módszer az ablakesemény-kezelők hozzáadására szolgál. A varázsló speciális tömböket hoz létre az ablakokhoz kapcsolódó osztályok keretein belül - (ablak)üzenetek térképei ( eng. message map ), amelyek "üzenetazonosító - mutató a kezelőhöz" párokat tartalmaznak. Kezelő hozzáadásakor/eltávolításakor a varázsló módosítja a megfelelő üzenetleképezést.
Az MFC első verziója a Microsoft 16 bites C/C++ fordítójának 7-es verziójával jelent meg 1992-ben. Az API -funkciókat használó alkalmazásokat fejlesztők számára az MFC csomag igen jelentős növekedést ígért a programozási folyamat termelékenységében.
Az MFC egyik figyelemre méltó jellemzője az "Afx" előtag, amelyet számos függvény, makró nevében használnak, valamint a szabványos fejlécfájl neve "stdafx.h". A fejlesztés korai szakaszában a később MFC néven ismertté vált „Application Framework Extensions” nevet kapta, rövidítése pedig „Afx”. A név Microsoft Foundation Classes (MFC) névre váltásáról szóló döntés túl későn született ahhoz, hogy megváltoztassák az Afx-re való hivatkozásokat a kódban.
Az Object Windows Library (OWL), amelyet a Borland fejlesztett ki saját C++ fordítójának futtatására , egy versenytárs termék volt, amelyet ugyanebben az időszakban mutattak be. A Borland végül leállította az OWL fejlesztését, és rövid távú licencet szerzett az MFC-könyvtárak használatára, de soha nem kínált teljes MFC-támogatást termékeiben. A Borland később kiadta a VCL -t az OWL helyett.
A Microsoft az MFC-re való összpontosítását a Microsoft .NET Framework javára lazította . Ennek ellenére az MFC továbbra is népszerű a fejlesztők körében.
2008 áprilisában a Microsoft több éves tétlenség után kiadta az MFC-hez az MFC Feature Pack nevű jelentős frissítést. Ezt a frissítést a Visual Studio 2008 kiegészítőjeként ajánlották fel telepítésre. Alapvetően további MFC osztályokról volt szó, amelyek jogait az orosz BCGSoft cégtől szerezték be [1] . Az MFC tartalmazta az új Ribbon interfész támogatását és számos egyéb fejlesztést a továbbfejlesztett interfészvezérlőkkel kapcsolatban. A Visual Studio 2008 Service Pack kiadása óta ezek az osztályok az MFC szerves részévé váltak.
Termék verzió | MFC verzió | kiadási dátum |
---|---|---|
Microsoft C/C++ 7.0 | MFC 1.0 | 1992 |
Visual C++ 1.0 | MFC 2.0 (bevezetett dokumentumnézet architektúra ) | |
Visual C++ 1.5 | MFC 2.5 (megvalósított ODBC és drag-and-drop technológiák támogatása ) | |
Visual C++ 1.52c | MFC 2.5 (utolsó fejlesztői platform MS Windows 3.x-hez) | |
Visual C++ 2.0 | MFC 3.0 (multitasking és Unicode támogatás hozzáadva ) | |
Visual C++ 2.1 | MFC 3.1 | |
Visual C++ 2.2 | MFC 3.2 | |
Visual C++ 4.0 | MFC 4.0 (az mfc40.dll a Windows 95-höz tartozik) | 1995. augusztus |
Visual C++ 4.1 | MFC 4.1 | |
Visual C++ 4.2 | MFC 4.2 (az mfc42.dll a Windows 98 kezdeti kiadásában szerepel) | 1998. március |
eMbedded Visual C++ 3.0 | MFC 4.2 (mfc42.dll) | |
Visual C++ 5.0 | MFC 4.21 (mfc42.dll), az MFC 4.2 fő frissítése. | |
Visual C++ 6.0 | MFC 6.0 (mfc42.dll) | 1998 |
eMbedded Visual C++ 4.0 | MFC 6.0 (mfcce400.dll) | |
Visual C++ .NET 2002 (Visual C++ 7.0) | MFC 7.0 (mfc70.dll), .NET 1.0 | 2002. február |
Visual C++ .NET 2003 (Visual C++ 7.1) | MFC 7.1 (mfc71.dll), .NET 1.1 | 2003. április |
Visual C++ 2005 [2] (Visual C++ 8.0) | MFC 8.0 (mfc80.dll), .NET 2.0 | 2005. október |
Visual C++ 2008 [2] (Visual C++ 9.0) | MFC 9.0.21022 (mfc90.dll), .NET 3.5 | 2007. november |
Visual C++ 2008 [2] funkciócsomaggal | MFC 9.0.30411 (mfc90.dll) | 2008. április |
Visual C++ 2008 [2] SP1 | MFC 9.0.30729 (mfc90.dll) | 2008. augusztus |
Visual C++ 2008 [2] Biztonsági frissítés (KB971092) | MFC 9.0.30729.4148 (mfc90.dll) | 2009. július |
Visual C++ 2010 | MFC 10.0.30319.1 (mfc100.dll), .NET 4.0 | 2010. április |
Visual C++ 2010 SP1 | MFC 10.0.40219.1 (mfc100.dll), .NET 4.0 | 2011. március |
Visual C++ 2010 + MS11-025 | MFC 10.0.30319.415 (mfc100.dll), .NET 4.0 | 2011. április |
Visual C++ 2012 (Visual C++ 11.0) | MFC 11.0.50727.1 (mfc110.dll), .NET 4.5 | 2012. július 26 |
Visual C++ 2012 Update 1 (Visual C++ 11.0) | MFC 11.0.51106.1 (mfc110.dll), .NET 4.5 | 2012. november 5 |
Visual C++ 2012 Update 3 (Visual C++ 11.0) | MFC 11.0.60610.1 (mfc110.dll), .NET 4.5 | 2012. július 26 |
Visual C++ 2013 (Visual C++ 12.0) | MFC 12.0.21005.1 (mfc120.dll), .NET 4.5.1 | 2013. október 5 |
Visual C++ 2013 2. frissítés (Visual C++ 12.0) | MFC 12.0.30501.0 (mfc120.dll), .NET 4.5.1 | 2014. december 30 |
Visual C++ 2015 (Visual C++ 14.0) | MFC 14.0.23026.0 (mfc140.dll), .NET 4.6 | 2015. július 20 |
Visual C++ 2015 Update 1 (Visual C++ 14.0) | MFC 14.0.23506.0 (mfc140.dll), .NET 4.6.1 | 2015. november 30 |
Visual C++ 2015 2. frissítés (Visual C++ 14.0) | MFC 14.0.23918.0 (mfc140.dll) | 2016. március 30 |
Visual C++ 2015 Update 3 (Visual C++ 14.0) | MFC 14.0.24210.0 (mfc140.dll) | 2016. június 27 |
Visual C++ 2015 Update 3 + KB3165756 | MFC 14.0.24212.0 (mfc140.dll) | 2016. augusztus 2 |
Visual C++ 2017 (Visual C++ 15.0) | MFC 14.10.25008.0 (mfc140.dll), .NET 4.6.2 | 2017. március 7 |
GUI elemek eszközkészletei (készletei) . | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
alacsony szintű |
| ||||||||||||||||||||||||||
magas szintű |
|