Microsoft Foundation Classes (MFC)-pakken er et C++ - bibliotek udviklet af Microsoft og designet til at lette udviklingen af GUI- applikationer til Microsoft Windows ved at bruge et rigt sæt af biblioteksklasser.
MFC-biblioteket gør det, ligesom dets hovedkonkurrent, Borland VCL , det nemmere at arbejde med GUI'en ved at skabe en applikationsramme - et "skelet"-program, der automatisk oprettes i henhold til et givet interface-layout og fuldstændig overtager rutinehandlingerne for dets vedligeholdelse (behandling af vindueshændelser, overførsel af data mellem interne elementbuffere og programvariable osv.). Efter generering af applikationsrammen behøver programmøren kun at indtaste koden på steder, hvor der kræves særlige handlinger. Rammen skal have en veldefineret struktur, så Visual C++ giver guider til at generere og ændre den.
Derudover giver MFC et objektorienteret lag af wrappers ( engelsk wrappers ) over mange af Windows API -funktionerne , hvilket gør arbejdet med dem noget mere bekvemt. Dette lag repræsenterer en masse objekter indbygget i systemet (vinduer, widgets , filer osv.) i form af klasser og tager sig igen af rutinehandlinger som at lukke deskriptorer og allokere/frigøre hukommelse.
Tilføjelse af applikationskode til rammen implementeres på to måder. Den første bruger arvemekanismen : rammens vigtigste programstrukturer præsenteres i form af klasser, der er nedarvet fra bibliotekets. Disse klasser giver mange virtuelle funktioner kaldet på bestemte punkter i programmet. Ved at omdefinere (i de fleste tilfælde er det nødvendigt at kalde en funktion af basisklassen) disse funktioner, kan programmøren tilføje eksekvering på disse punkter i sin kode.
Den anden metode bruges til at tilføje vindueshændelseshandlere. Guiden opretter specielle arrays inden for rammerne af klasser forbundet med windows - kort over (vindue) meddelelser ( eng. message map ), der indeholder par af "meddelelses-id - pointer to handler". Når du tilføjer/fjerner en handler, foretager guiden ændringer i det tilsvarende meddelelseskort.
Den første version af MFC blev udgivet med version 7 af Microsofts 16-bit C/C++ compiler i 1992. For dem, der udviklede applikationer ved hjælp af API -funktioner, lovede MFC-pakken en meget betydelig stigning i produktiviteten af programmeringsprocessen.
Et bemærkelsesværdigt træk ved MFC er "Afx"-præfikset, der bruges i navnene på mange funktioner, makroer og navnet på standardheaderfilen "stdafx.h". På et tidligt udviklingsstadium blev det, der senere blev kendt som MFC, kaldt "Application Framework Extensions" og forkortet til "Afx". Beslutningen om at ændre navnet til Microsoft Foundation Classes (MFC) blev truffet for sent til at ændre referencer til Afx i koden.
Object Windows Library (OWL), udviklet af Borland til at køre sin egen C++ compiler , var et konkurrerende produkt, der blev introduceret i samme periode. Borland stoppede til sidst udviklingen af OWL og erhvervede en kortvarig licens til at bruge MFC-bibliotekerne, men tilbød aldrig fuld MFC-support i sine produkter. Borland udgav senere VCL som erstatning for OWL.
Microsofts fokus på MFC er blevet løsnet til fordel for Microsoft .NET Framework . På trods af dette er MFC stadig populær blandt udviklere.
I april 2008 udgav Microsoft, efter mange års inaktivitet, en større opdatering til MFC kaldet MFC Feature Pack. Denne opdatering blev tilbudt til installation som en tilføjelse til Visual Studio 2008. Dybest set var disse yderligere MFC-klasser, som rettighederne til blev erhvervet fra det russiske firma BCGSoft [1] . MFC inkluderede understøttelse af den nye Ribbon -grænseflade og flere andre forbedringer relateret til forbedrede grænsefladekontroller. Siden udgivelsen af Visual Studio 2008 Service Pack er disse klasser blevet en integreret del af MFC.
Produktversion | MFC version | udgivelses dato |
---|---|---|
Microsoft C/C++ 7.0 | MFC 1.0 | 1992 |
Visual C++ 1.0 | MFC 2.0 (introduceret dokumentvisningsarkitektur ) | |
Visual C++ 1.5 | MFC 2.5 (implementeret understøttelse af ODBC og træk-og-slip- teknologier ) | |
Visual C++ 1.52c | MFC 2.5 (sidste udviklingsplatform til MS Windows 3.x) | |
Visual C++ 2.0 | MFC 3.0 (tilsat multitasking og Unicode- understøttelse ) | |
Visual C++ 2.1 | MFC 3.1 | |
Visual C++ 2.2 | MFC 3.2 | |
Visual C++ 4.0 | MFC 4.0 (mfc40.dll inkluderet i Windows 95) | august 1995 |
Visual C++ 4.1 | MFC 4.1 | |
Visual C++ 4.2 | MFC 4.2 (mfc42.dll inkluderet i den første udgivelse af Windows 98) | marts 1998 |
Indlejret Visual C++ 3.0 | MFC 4.2 (mfc42.dll) | |
Visual C++ 5.0 | MFC 4.21 (mfc42.dll), en større opdatering til MFC 4.2. | |
Visual C++ 6.0 | MFC 6.0 (mfc42.dll) | 1998 |
Indlejret 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 | februar 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) | august 2008 |
Visual C++ 2008 [2] Sikkerhedsopdatering (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 | marts 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. marts 2016 |
Visual C++ 2015 Update 3 (Visual C++ 14.0) | MFC 14.0.24210.0 (mfc140.dll) | 27. juni 2016 |
Visual C++ 2015-opdatering 3 + KB3165756 | MFC 14.0.24212.0 (mfc140.dll) | 2. august 2016 |
Visual C++ 2017 (Visual C++ 15.0) | MFC 14.10.25008.0 (mfc140.dll), .NET 4.6.2 | 7. marts 2017 |
af GUI-elementer | Værktøjssæt (sæt)|||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
lavt niveau |
| ||||||||||||||||||||||||||
højt niveau |
|