Microsoft Foundation Classes (MFC)-paketet är ett C++-bibliotek utvecklat av Microsoft och utformat för att underlätta utvecklingen av GUI- applikationer för Microsoft Windows genom att använda en rik uppsättning biblioteksklasser.
MFC-biblioteket, liksom sin huvudkonkurrent, Borland VCL , gör det lättare att arbeta med GUI genom att skapa ett applikationsramverk - ett "skelett"-program som automatiskt skapas enligt en given gränssnittslayout och helt tar över rutinåtgärderna för dess underhåll (bearbeta fönsterhändelser, överföring av data mellan interna elementbuffertar och programvariabler, etc.). Efter att ha genererat applikationsramverket behöver programmeraren bara ange koden på platser där speciella åtgärder krävs. Ramverket måste ha en väldefinierad struktur, så Visual C++ tillhandahåller guider för att generera och ändra det.
Dessutom tillhandahåller MFC ett objektorienterat lager av omslag ( engelska omslag ) över många av Windows API -funktioner , vilket gör att arbeta med dem något mer bekvämt. Detta lager representerar många objekt inbyggda i systemet (fönster, widgets , filer, etc.) i form av klasser och tar återigen hand om rutinåtgärder som att stänga deskriptorer och allokera/frigöra minne.
Att lägga till applikationskod till ramverket implementeras på två sätt. Den första använder arvsmekanismen : ramverkets huvudprogramstrukturer presenteras i form av klasser som ärvts från biblioteksklasser. Dessa klasser tillhandahåller många virtuella funktioner som anropas vid vissa punkter i programmet. Genom att omdefiniera (i de flesta fall är det nödvändigt att anropa en funktion av basklassen) dessa funktioner, kan programmeraren lägga till exekvering vid dessa punkter i sin kod.
Den andra metoden används för att lägga till fönsterhändelsehanterare. Guiden skapar speciella arrayer inom ramarna för klasser associerade med windows - kartor av (fönster)meddelanden ( eng. message map ), som innehåller par av "meddelande-ID - pekare till hanterare". När du lägger till/tar bort en hanterare gör guiden ändringar i motsvarande meddelandekarta.
Den första versionen av MFC släpptes med version 7 av Microsofts 16-bitars C/C++ kompilator 1992. För dem som utvecklade applikationer med API -funktioner utlovade MFC-paketet en mycket betydande ökning av produktiviteten i programmeringsprocessen.
En anmärkningsvärd egenskap hos MFC är prefixet "Afx" som används i namnen på många funktioner, makron och namnet på standardhuvudfilen "stdafx.h". I ett tidigt utvecklingsskede kallades det som senare blev känt som MFC "Application Framework Extensions" och förkortades "Afx". Beslutet att ändra namnet till Microsoft Foundation Classes (MFC) togs för sent för att ändra referenser till Afx i koden.
Object Windows Library (OWL), utvecklat av Borland för att köra sin egen C++- kompilator , var en konkurrerande produkt som introducerades under samma period. Borland slutade så småningom utvecklingen av OWL och skaffade en korttidslicens för att använda MFC-biblioteken, men erbjöd aldrig fullt MFC-stöd i sina produkter. Borland släppte senare VCL som ersättare för OWL.
Microsofts fokus på MFC har luckrats upp till förmån för Microsoft .NET Framework . Men trots detta är MFC fortfarande populär bland utvecklare.
I april 2008 släppte Microsoft, efter år av inaktivitet, en stor uppdatering till MFC som heter MFC Feature Pack. Denna uppdatering erbjöds för installation som ett tillägg till Visual Studio 2008. I grund och botten var dessa ytterligare MFC-klasser, rättigheterna till vilka förvärvades från det ryska företaget BCGSoft [1] . MFC inkluderade stöd för det nya Ribbon -gränssnittet och flera andra förbättringar relaterade till förbättrade gränssnittskontroller. Sedan lanseringen av Visual Studio 2008 Service Pack har dessa klasser blivit en integrerad del av MFC.
Produktversion | MFC-version | Utgivningsdatum |
---|---|---|
Microsoft C/C++ 7.0 | MFC 1.0 | 1992 |
Visual C++ 1.0 | MFC 2.0 (introducerad dokumentvisningsarkitektur ) | |
Visual C++ 1.5 | MFC 2.5 (implementerat stöd för ODBC och dra-och-släpp- teknik ) | |
Visual C++ 1.52c | MFC 2.5 (senaste utvecklingsplattformen för MS Windows 3.x) | |
Visual C++ 2.0 | MFC 3.0 (tillagt multitasking och Unicode- stöd ) | |
Visual C++ 2.1 | MFC 3.1 | |
Visual C++ 2.2 | MFC 3.2 | |
Visual C++ 4.0 | MFC 4.0 (mfc40.dll ingår i Windows 95) | augusti 1995 |
Visual C++ 4.1 | MFC 4.1 | |
Visual C++ 4.2 | MFC 4.2 (mfc42.dll ingår i den första versionen av Windows 98) | mars 1998 |
Inbäddad Visual C++ 3.0 | MFC 4.2 (mfc42.dll) | |
Visual C++ 5.0 | MFC 4.21 (mfc42.dll), en stor uppdatering av MFC 4.2. | |
Visual C++ 6.0 | MFC 6.0 (mfc42.dll) | 1998 |
Inbäddad 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 | februari 2002 |
Visual C++ .NET 2003 (Visual C++ 7.1) | MFC 7.1 (mfc71.dll), .NET 1.1 | april 2003 |
Visual C++ 2005 [2] (Visual C++ 8.0) | MFC 8.0 (mfc80.dll), .NET 2.0 | oktober 2005 |
Visual C++ 2008 [2] (Visual C++ 9.0) | MFC 9.0.21022 (mfc90.dll), .NET 3.5 | november 2007 |
Visual C++ 2008 [2] med Feature Pack | MFC 9.0.30411 (mfc90.dll) | april 2008 |
Visual C++ 2008 [2] SP1 | MFC 9.0.30729 (mfc90.dll) | augusti 2008 |
Visual C++ 2008 [2] Säkerhetsuppdatering (KB971092) | MFC 9.0.30729.4148 (mfc90.dll) | juli 2009 |
Visual C++ 2010 | MFC 10.0.30319.1 (mfc100.dll), .NET 4.0 | april 2010 |
Visual C++ 2010 SP1 | MFC 10.0.40219.1 (mfc100.dll), .NET 4.0 | mars 2011 |
Visual C++ 2010 + MS11-025 | MFC 10.0.30319.415 (mfc100.dll), .NET 4.0 | april 2011 |
Visual C++ 2012 (Visual C++ 11.0) | MFC 11.0.50727.1 (mfc110.dll), .NET 4.5 | 26 juli 2012 |
Visual C++ 2012 Update 1 (Visual C++ 11.0) | MFC 11.0.51106.1 (mfc110.dll), .NET 4.5 | 5 november 2012 |
Visual C++ 2012 Update 3 (Visual C++ 11.0) | MFC 11.0.60610.1 (mfc110.dll), .NET 4.5 | 26 juli 2012 |
Visual C++ 2013 (Visual C++ 12.0) | MFC 12.0.21005.1 (mfc120.dll), .NET 4.5.1 | 5 oktober 2013 |
Visual C++ 2013 Update 2 (Visual C++ 12.0) | MFC 12.0.30501.0 (mfc120.dll), .NET 4.5.1 | 30 december 2014 |
Visual C++ 2015 (Visual C++ 14.0) | MFC 14.0.23026.0 (mfc140.dll), .NET 4.6 | 20 juli 2015 |
Visual C++ 2015 Update 1 (Visual C++ 14.0) | MFC 14.0.23506.0 (mfc140.dll), .NET 4.6.1 | 30 november 2015 |
Visual C++ 2015 Update 2 (Visual C++ 14.0) | MFC 14.0.23918.0 (mfc140.dll) | 30 mars 2016 |
Visual C++ 2015 Update 3 (Visual C++ 14.0) | MFC 14.0.24210.0 (mfc140.dll) | 27 juni 2016 |
Visual C++ 2015-uppdatering 3 + KB3165756 | MFC 14.0.24212.0 (mfc140.dll) | 2 augusti 2016 |
Visual C++ 2017 (Visual C++ 15.0) | MFC 14.10.25008.0 (mfc140.dll), .NET 4.6.2 | 7 mars 2017 |
med GUI-element | Verktygssatser (uppsättningar)|||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
låg nivå |
| ||||||||||||||||||||||||||
hög nivå |
|