MFC - Google

MFC

Z Wikipedii

Skocz do: nawigacji, szukaj

MFC (Microsoft Foundation Classes) jest biblioteką programistyczną Visual C++, której klasy stanowią szkielet aplikacji dla programów pracujących w systemie Windows. Jest to biblioteka napisana w języku C++, która stanowi obiektową (i uproszczoną) wersję Microsoft Windows API.

Spis treści

[edytuj] Historia

  • MFC powstaÅ‚a kilka lat temu razem z pojawieniem siÄ™ Visual C++ 1.0. Od wersji 3.0, aż do obecnej jest bibliotekÄ… 32 bitowÄ…, poprzednie wersje byÅ‚y 16 bitowe(1.0 - 2.5)
  • Ze wzglÄ™du na szybko zmieniajÄ…ce siÄ™ wersje biblioteki, Microsoft zdecydowaÅ‚ od wersji 4.2 wprowadzić zgodność ze wszystkimi kolejnymi wersjami. Od tego czasu uaktualnienia biblioteki skompilowane sÄ… w pliku MFC(xx).dll(gdzie xx to wersja biblioteki).
  • Typowe funkcje używane przez VC++ zawarte sÄ… w bibliotece MSVCRT.dll, nie sÄ… to jednak funkcje biblioteki MFC, co jest czÄ™sto mylone, gdyż obydwa pliki sÄ… potrzebne do prawidÅ‚owego dziaÅ‚ania aplikacji korzystajÄ…cych z MFC

[edytuj] Elementy charakterystyczne

  • Architektura dokument/widok
Technika programowania polegająca na rozdzieleniu interfejsu użytkownika oraz danych programu. Opanowanie techniki i implementacji architektury dokument/widok pozwala tworzyć przejrzyste aplikacje oraz pielęgnować wygląd aplikacji.
  • Kolekcje
Biblioteka MFC udostępnia różnego rodzaju kolekcje, podobne do tych z STL:
    • CArray
    • CMap
    • CList(CObList ...)
    • CStringList
  • Serializacja
Bardzo wygodna funkcja, dzięki której można w łatwy sposób zapisywać całe obiekty klas do pliku lub czegoś innego(drukarka, urządzenie zewnętrzne, itd.)

[edytuj] Cechy designu biblioteki

Biblioteka MFC jest stworzona w stylu obiektowym bardzo przypominającym zwyczaje panujące w bibliotekach języka Smalltalk. Stąd wynika np. istnienie "głównego korzenia" w postaci klasy CObject, obowiązek stosowania wyłącznie pojedynczego dziedziczenia, jak również częstego jawnego rzutowania wskaźników na obiekty wynikającego z konieczności obejścia statycznej typizacji, która przeszkadza w pełnej obiektowości, jaką mamy w Smalltalku.

Biblioteka MFC stosuje wiele obejść względem istniejącego sposobu operowania obiektami w C++, m.in. własne mechanizmy tworzenia obiektów oraz własne mechanizmy refleksji (za pomocą specjalnych makr umieszczanych w klasach). Nie stosuje również w ogóle obiektów automatycznych (tworzonych na stosie).

W kwestii tworzenia GUI, biblioteka MFC nie oferuje nam żadnego mechanizmu rozmieszczania widżetów poza podstawowym umieszczaniem widżetu na określonej pozycji w oknie (z tego względu zwykle okna specjalnie dla MFC i WinAPI konstruuje się za pomocą odpowiednich narzędzi i zapisuje w tzw. pliku zasobów, który potem kompiluje się wraz z całym projektem i potem do utworzenia okna stosuje się jedynie identyfikator zasobu). Co za tym idzie, nie ma również możliwości stosowania w poszczególnych widżetach własnej polityki rozmiaru inaczej, niż po prostu przez obsługiwanie zdarzenia WM_SIZE.

W MFC istnieje jeden mechanizm obsługi zdarzeń, który w istocie jest jedynie lekko ulepszoną metodą znaną z WinAPI - konstruowana jest tablica zdarzeń określonego okna, czyli lista asocjacji pomiędzy identyfikatorem zdarzenia systemu Windows i funkcją obsługi. Wszystko, co można w tych zdarzeniach określić i obsłużyć, jest ściśle określone tym, co w tej dziedzinie można uzyskać w czystym WinAPI. Tablicę tą tworzy się za pomocą odpowiednich makr, przy czym MFC dodatkowo narzuca nazewnictwo funkcji obsługi zdarzeń.

[edytuj] Inne biblioteki GUI dostępne dla Windows


Wielkie sprzÄ…tanie po huraganie
Mieszkańcy Meksyku zaczynają wielkie sprzątanie po przejściu huraganu Dolly. Mimo, że tropikalny sztorm opuszcza już powoli meksykański odcinek wybrzeża, ślady po nim zostaną jeszcze długo.
Polityka debiutuje w MTV
Muzyczna telewizja MTV widziała już w swojej historii wiele debiutów, jednak tym razem to coś zupełnie nowego. Temperatura kampanii prezydenckiej w USA spowodowała, że w popularnej telewizji po raz pierwszy pojawiła się polityczna reklama.
Znów strzelanina w amerykańskiej szkole
Mężczyzna o nieznanej dotąd tożsamości otworzył ogień w szkole w amerykańskim stanie Arizona. Kule dosięgły trzech osób, dwie z nich znajdują się w krytycznym stanie.
Rosja zapłaci za tortury
W czwartek w Europejskim Trybunale Praw Człowieka zakończył się proces wytoczony Federacji Rosyjskiej przez torturowanego w więzieniu mężczyznę. 35-latek ma otrzymać 20 tysięcy euro odszkodowania.
Demonstranci bronią Karadżicia
Drugi dzień z rzędu w stolicy Serbii ponownie demonstrowali serbscy nacjonaliści. W centrum Belgradu protestowali przeciwko aresztowaniu zbrodniarza wojennego i byłego przywódcy Serbów bośniackich Radovana Karadżicia. To już druga, po środowej, demonstracja na ulicach Belgradu w obronie Karadżicia.
Linki: Strona g³ówna