Balíček Microsoft Foundation Classes (MFC) je knihovna C++ vyvinutá společností Microsoft a navržená k usnadnění vývoje aplikací GUI pro Microsoft Windows pomocí bohaté sady tříd knihoven.
Knihovna MFC, stejně jako její hlavní konkurent, Borland VCL , usnadňuje práci s GUI vytvořením aplikačního frameworku – „kostra“ programu, který se automaticky vytváří podle daného rozložení rozhraní a zcela přebírá rutinní akce za své údržba (zpracování událostí okna, přenos dat mezi vnitřními vyrovnávací paměti prvků a proměnnými programu atd.). Po vygenerování aplikačního rámce potřebuje programátor pouze zadat kód do míst, kde jsou vyžadovány speciální akce. Rámec musí mít dobře definovanou strukturu, takže Visual C++ poskytuje průvodce pro jeho generování a úpravu.
Kromě toho MFC poskytuje objektově orientovanou vrstvu wrapperů ( anglicky wrappers ) přes mnoho funkcí Windows API , díky čemuž je práce s nimi o něco pohodlnější. Tato vrstva představuje mnoho objektů zabudovaných do systému (okna, widgety , soubory atd.) ve formě tříd a opět se stará o rutinní akce, jako je zavírání deskriptorů a alokace / uvolnění paměti.
Přidání aplikačního kódu do frameworku je implementováno dvěma způsoby. První využívá mechanismus dědičnosti : hlavní programové struktury rámce jsou prezentovány ve formě tříd zděděných z knihoven. Tyto třídy poskytují mnoho virtuálních funkcí volaných v určitých bodech programu. Předefinováním (ve většině případů je nutné volat funkci základní třídy) těchto funkcí může programátor přidat provádění v těchto bodech svého kódu.
Druhá metoda se používá k přidání obslužných rutin událostí okna. Průvodce vytváří speciální pole uvnitř rámců tříd spojených s okny - mapy (okenních) zpráv ( angl. message map ), obsahující dvojice "ID zprávy - ukazatel na handler". Při přidávání/odebírání obslužné rutiny provede průvodce změny v odpovídající mapě zpráv.
První verze MFC byla vydána s verzí 7 16bitového kompilátoru C/C++ společnosti Microsoft v roce 1992. Pro ty, kteří vyvíjeli aplikace pomocí funkcí API , balíček MFC sliboval velmi výrazné zvýšení produktivity programovacího procesu.
Jednou z pozoruhodných vlastností MFC je předpona "Afx" používaná v názvech mnoha funkcí, maker a název standardního hlavičkového souboru "stdafx.h". V rané fázi vývoje se to, co se později stalo známým jako MFC, nazývalo „Rozšíření aplikačního rámce“ a zkráceno jako „Afx“. Rozhodnutí změnit název na Microsoft Foundation Classes (MFC) bylo učiněno příliš pozdě na to, aby se v kódu změnily odkazy na Afx.
Knihovna Object Windows Library (OWL), vyvinutá společností Borland pro provoz vlastního kompilátoru C++ , byla konkurenčním produktem představeným ve stejném období. Borland nakonec vývoj OWL zastavil a získal krátkodobou licenci na používání knihoven MFC, ale nikdy nenabídl plnou podporu MFC ve svých produktech. Borland později vydal VCL jako náhradu za OWL.
Zaměření Microsoftu na MFC bylo uvolněno ve prospěch Microsoft .NET Framework . Navzdory tomu je však MFC mezi vývojáři stále populární.
V dubnu 2008 vydal Microsoft po letech nečinnosti velkou aktualizaci MFC nazvanou MFC Feature Pack. Tato aktualizace byla nabídnuta k instalaci jako doplněk k Visual Studiu 2008. V podstatě se jednalo o dodatečné třídy MFC, ke kterým byla získána práva od ruské společnosti BCGSoft [1] . MFC zahrnoval podporu pro nové rozhraní pásu karet a několik dalších vylepšení souvisejících s vylepšenými ovládacími prvky rozhraní. Od vydání aktualizace Visual Studio 2008 Service Pack se tyto třídy staly nedílnou součástí MFC.
Verze produktu | verze MFC | datum vydání |
---|---|---|
Microsoft C/C++ 7.0 | MFC 1.0 | 1992 |
Visual C++ 1.0 | MFC 2.0 (představená architektura zobrazení dokumentů ) | |
Visual C++ 1.5 | MFC 2.5 (implementovaná podpora pro ODBC a technologie drag-and-drop ) | |
Visual C++ 1.52c | MFC 2.5 (poslední vývojová platforma pro MS Windows 3.x) | |
Visual C++ 2.0 | MFC 3.0 (přidána podpora multitaskingu a Unicode ) | |
Visual C++ 2.1 | MFC 3.1 | |
Visual C++ 2.2 | MFC 3.2 | |
Visual C++ 4.0 | MFC 4.0 (mfc40.dll součástí Windows 95) | srpna 1995 |
Visual C++ 4.1 | MFC 4.1 | |
Visual C++ 4.2 | MFC 4.2 (mfc42.dll součástí počáteční verze Windows 98) | březen 1998 |
eMbedded Visual C++ 3.0 | MFC 4.2 (mfc42.dll) | |
Visual C++ 5.0 | MFC 4.21 (mfc42.dll), hlavní aktualizace MFC 4.2. | |
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 | února 2002 |
Visual C++ .NET 2003 (Visual C++ 7.1) | MFC 7.1 (mfc71.dll), .NET 1.1 | dubna 2003 |
Visual C++ 2005 [2] (Visual C++ 8.0) | MFC 8.0 (mfc80.dll), .NET 2.0 | října 2005 |
Visual C++ 2008 [2] (Visual C++ 9.0) | MFC 9.0.21022 (mfc90.dll), .NET 3.5 | listopadu 2007 |
Visual C++ 2008 [2] s Feature Pack | MFC 9.0.30411 (mfc90.dll) | dubna 2008 |
Visual C++ 2008 [2] SP1 | MFC 9.0.30729 (mfc90.dll) | srpna 2008 |
Aktualizace zabezpečení Visual C++ 2008 [2] (KB971092) | MFC 9.0.30729.4148 (mfc90.dll) | července 2009 |
Visual C++ 2010 | MFC 10.0.30319.1 (mfc100.dll), .NET 4.0 | dubna 2010 |
Visual C++ 2010 SP1 | MFC 10.0.40219.1 (mfc100.dll), .NET 4.0 | březen 2011 |
Visual C++ 2010 + MS11-025 | MFC 10.0.30319.415 (mfc100.dll), .NET 4.0 | dubna 2011 |
Visual C++ 2012 (Visual C++ 11.0) | MFC 11.0.50727.1 (mfc110.dll), .NET 4.5 | 26. července 2012 |
Visual C++ 2012 Update 1 (Visual C++ 11.0) | MFC 11.0.51106.1 (mfc110.dll), .NET 4.5 | 5. listopadu 2012 |
Visual C++ 2012 Update 3 (Visual C++ 11.0) | MFC 11.0.60610.1 (mfc110.dll), .NET 4.5 | 26. července 2012 |
Visual C++ 2013 (Visual C++ 12.0) | MFC 12.0.21005.1 (mfc120.dll), .NET 4.5.1 | 5. října 2013 |
Visual C++ 2013 Update 2 (Visual C++ 12.0) | MFC 12.0.30501.0 (mfc120.dll), .NET 4.5.1 | 30. prosince 2014 |
Visual C++ 2015 (Visual C++ 14.0) | MFC 14.0.23026.0 (mfc140.dll), .NET 4.6 | 20. července 2015 |
Visual C++ 2015 Update 1 (Visual C++ 14.0) | MFC 14.0.23506.0 (mfc140.dll), .NET 4.6.1 | 30. listopadu 2015 |
Visual C++ 2015 Update 2 (Visual C++ 14.0) | MFC 14.0.23918.0 (mfc140.dll) | 30. března 2016 |
Visual C++ 2015 Update 3 (Visual C++ 14.0) | MFC 14.0.24210.0 (mfc140.dll) | 27. června 2016 |
Visual C++ 2015 Update 3 + KB3165756 | MFC 14.0.24212.0 (mfc140.dll) | 2. srpna 2016 |
Visual C++ 2017 (Visual C++ 15.0) | MFC 14.10.25008.0 (mfc140.dll), .NET 4.6.2 | 7. března 2017 |
prvků GUI | Toolkity (sady)|||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
na nízké úrovni |
| ||||||||||||||||||||||||||
vysoká úroveň |
|