MFC
Z Wikipedii
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.
|
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.
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.
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.
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.
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.