Microsoft Foundation Class Library

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání
MFC
Knihovna MFC je jednou z nejrozšířenějších a nejznámějších knihoven pro vytváření grafického rozhraní v OS Windows.
Jazyk
Psána jazykem C++. Implementuje mnoho funkcí Windows 32 API.

Microsoft Foundation Class Library (Microsoft Foundation Classes nebo MFC) je knihovna, která zabaluje části Windows API do ucelených C++ tříd, které zajišťují použití a plnou kompatibilitu s většinou platforem OS Windows. Třídy spravují většinu objektů ve Windows a tedy předdefinovávají například okna nebo kontrolní panely.

Historie[editovat | editovat zdroj]

Knihovna MFC byla poprvé představena v roce 1992 společně s kompilátorem C/C++ 7.0 pro 16 bitové verze OS Windows. Jazyk C++ postupem času nahradil C pro vývoj komerčního software a C/C++ 7.0 byl první kompilátor společnosti Microsoft, který C++ podporoval.

MFC používá „Afx“ jako předponu mnoha funkcí, maker a standardních předkompilovaných hlavičkových souborů (např. stdafx.h). Během krátkého období se knihovna MFC stala populární a mnoho programátorů jí začalo zařazovat jako "Application Framework Extensions (Rozšíření pracovního prostředí)" neboli ve zkratce "AFX". Avšak název Microsoft Foundation Class (MFC) byl přijat později, a proto nezasáhl do názvů funkcí, maker a hlavičkových souborů.[1]

Knihovna MFC 8.0 byla vydána společně s Visual Studiem 2005. MFC není součástí volné edice Visual C++ 2005 verze Express.

Object Windows Library (OWL) je navržena pro Borland kompilátor Turbo C++ a byla představena společností Borland ve stejné době. Borland dokonce přestal vyvíjet OWL a uvalil licenci na kolekci hlavičkových souborů MFC, knihoven a DLL souborů.[2] I když byla tato licence po krátké době zrušena, MFC přestala plně podporovat OWL. Borland proto později vydal VCL (Visual Component Library), aby opravil nekompatibilitu.

Význam MFC byl ovšem oslaben s příchodem .NET Framework. Alternativou k MFC je Windows Template Library (WTL). Kompilátor Visual C++ Express dokáže zkompilovat MFC aplikace, avšak nezahrnuje podporu IDE profesionálních edicí.[3]

Vlastnosti[editovat | editovat zdroj]

Když se na trhu objevila knihovna MFC, byla programátory Windows API uvítána především proto, že poskytovala rozmanitou sadu tříd, které ve své podstatě zabalují složitou procedurální architekturu WinAPI. Pro složité operace (jako např. Message Maps) bylo MFC vybaveno množstvím maker, která skrývají obtížnou funkcionalitu do jednoduchých definic. Struktura MFC je za pomocí maker optimalizována pro výkon (zejména díky mapám zpráv, které odlehčují definice tříd, napojených na mapování, o množství virtuálních funkcí, které daná třída zrovna nevyužije).

Pro urychlení vývoje MFC aplikací byly mnohé stěžejní třídy doplněny o funkcionalitu vyšší úrovně, s jejíž pomocí lze s jednoduchostí, nesrovnatelnou s přímým užitím WinAPI funkcí, provádět často užívané a žádané činnosti, jako je např. tvorba uživatelských nabídek a nástrojových lišt, dialogů apod. MFC také poskytlo sadu šablonových tříd pro správu kolekcí, řetězců, vstupu a výstupu apod., což v době, kdy ještě nebyla vyvinutá knihovna STL, vzbudilo velký zájem vývojářů.

Zavedení knihovny MFC ve své době představuje přínos především v rychlosti vývoje a v oblasti stability aplikací. Ač již byl tento produkt překonaný, díky svému někdejšímu rozšíření je stále aktivně používaný.

Chyby[editovat | editovat zdroj]

MFC je spojena s vysokou kompatibilitou v rámci OS Windows. MFC je dynamicky se rozšiřující knihovna, která jako jediná je udržována přímo výrobcem OS Windows firmou Microsoft. Proto pokud je nějaký program napsán např pro Win NT a vyšší, téměř jistě se vyskytne mnoho problémů při zprovoznění na Win 98 a nižší. Důvodem je postupné doplňování obslužných maker a rutin MFC. Dalším důvodem je mnoho chyb přímo v operačních systémech Windows. Příkladem může být chyba v práci s bity ve Windows 98, kterou je třeba brát v úvahu při práci se soubory.

Třídy[editovat | editovat zdroj]

Mnohé třídy MFC tvoří objektově orientované "balení" pro velmi podobné datové struktury z Windows API, přičemž ze svých členských funkcí volají nativní funkce Windows API.

MFC třídy a jimi obalené Windows API struktury

  • CFile → HFILE
  • CRect → LPRECT
  • CWnd → HWND

Mnoho tříd však tvoří zcela novou úroveň, shrnují množství sourodé funkcionality a poskytují ve své implementaci metody pro tvorbu kostry okenní aplikace základní a zásadní. První třídou, na níž padne zrak, je zcela právem třída "CWinApp". Tato třída přináší MFC implementaci zpracování zpráv (tzv. Message Loop), čímž vývojářům ušetřila nelehký úkol tvorby vlastního zpracování. Propracovaná konstrukce v duchu OOP pak umožňuje řízení a distribuci zpracovaných zpráv do všech dílčích oken aplikace.

Názvosloví[editovat | editovat zdroj]

MFC zavádí pro své vývojáře také sjednocené názvosloví. Stručný souhrn základních pravidel pro názvy:

  • Název třídy začíná velkým "C" (od slova "class"), následuje název třídy (jeho první písmeno opět velké), např. "CDialog"
  • Název proměnné začíná zkratkou, definující typ proměnné, např. "p" pro pointer (ukazatel), "sz" pro char*, "b" pro bool
  • Název členské proměnné v třídě začíná prefixem "m_", např. "m_pNextItem"

Verze[editovat | editovat zdroj]

Verze produktu MFC verze
Microsoft C/C++ 7.0 MFC 1.0
Visual C++ 1.0 MFC 2.0
Visual C++ 1.5 MFC 2.5
Visual C++ 2.0 MFC 3.0
Visual C++ 2.1 MFC 3.1
Visual C++ 2.2 MFC 3.2
Visual C++ 4.0 MFC 4.0 (mfc40.dll zahrnuta ve Windows 95)
Visual C++ 4.1 MFC 4.1
Visual C++ 4.2 MFC 4.2 (mfc42.dll zahrnuta ve Windows 98-1. Edice)
Pocket PC Embedded 3.0 MFC 4.2 (mfc42.dll)
Visual C++ 5.0 MFC 4.21 (mfc42.dll)
Visual C++ 6.0 MFC 6.0 (mfc42.dll)
Pocket PC Embedded 4.0
Visual C++ .NET 2002 MFC 7.0 (mfc70.dll)
Visual C++ .NET 2003 MFC 7.1 (mfc71.dll)
Visual C++ 2005 MFC 8.0 (mfc80.dll)
Visual C++ 2005 Express None
Visual C++ 2008 MFC 9.0 (mfc90.dll)

Odkazy[editovat | editovat zdroj]

Citace a reference[editovat | editovat zdroj]

  1. Microsoft Codenamed "Acropolis" – Composite Client Application Builder for .NET [online]. microsoft.com, [cit. 2007-10-09]. Dostupné online. (anglicky, japonsky) 
  2. Microsoft Buys Into Inprise, Settles Disputes [php]. The TechWeb Network, 1999-06-08, [cit. 2007-10-09]. Dostupné online. (anglicky) 
  3. Visual C++ Express - Easy to Use [aspx]. Microsoft, [cit. 2007-10-09]. Dostupné online. (anglicky) 

Zdroje[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku Microsoft Foundation Class Library na anglické Wikipedii.