Microsoft Foundation Classes

Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 10. Januar 2014 um 04:53 Uhr durch 87.188.229.62 (Diskussion) (Funktionsweise). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Die Microsoft Foundation Classes (MFC) sind eine Sammlung objektorientierter Klassenbibliotheken, die von Microsoft für die Programmierung von Anwendungen mit grafischen Benutzeroberflächen für Windows mit C++ entwickelt wurden.[1]

Geschichte

Microsoft führte die MFC 1992 mit dem hauseigenen Compiler für C++ und C ein. Die MFC werden mit diversen Microsoft-C++-Übersetzern ausgeliefert und sind Teil der Vollversionen der integrierten Entwicklungsumgebung Microsoft Visual Studio. Die kostenlosen Visual-Studio-Express-Editionen enthalten die MFC nicht. Seit Windows 2000 sind oft eine oder mehrere MFC-Programmbibliotheken in einer Betriebssysteminstallation enthalten.

Zur Nutzung von übersetzten MFC-Programmen ist oft keine Installation einer Laufzeitbibliothek notwendig, da auf vielen Windowssystemen schon die "Visual Studio C++ 20XX Runtime" installiert ist, die wiederum die MFC-Laufzeit enthält.

Ein Merkmal von MFC ist die Verwendung von „Afx“ als Präfix vieler Funktionen, Makros und sein Vorkommen beim standardmäßig vorkompilierten Headernamen „stdafx.h“, was daher rührt, dass in der frühen Entwicklung der MFC diese zunächst „Application Framework Extensions“ genannt und mit „Afx“ abgekürzt wurde. Erst viel später wurde „Afx“ in MFC umbenannt – so spät, dass diese Bezüge nicht mehr verändert werden konnten.

Neben der Weiterentwicklung durch den Hersteller bei weitgehender Abwärtskompatibilität existieren zahlreiche Ergänzungen durch kommerzielle Anbieter sowie eine ausführliche Dokumentation. Alle in Windows verwendeten Steuerelemente können verwendet werden. So sind aktuelle Komponenten aus Windows und anderen Microsoft-Produkten (z. B. Ribbons) in den MFC verfügbar, sowie das aktuelle Aero-Design.

Funktionsweise

Die MFC dienen u. a. als Schnittstelle zu den nicht objektorientierten API-Funktionen des Betriebssystems. Sie sollen den Umgang mit den vom Betriebssystem zur Verfügung gestellten Ressourcen erheblich vereinfachen.

Die MFC stellen somit eine Umsetzung des Adapter-Entwurfsmusters dar – anstatt nur direkt die Win32-API-Funktionen verwenden zu können, kann der Programmierer nun als Adapter zum laufenden Betriebssystem die Klassendefinitionen (Prototypien, in .h-Dateien) der MFC verwenden, oder auch deren Implementationen in den cpp-Dateien STATISCH dazubinden, - mit realen Funktionskörpern und anderen (Daten-)Membern aus der Klassen-Prototypie in .h , so daß Laufzeitinterferenzen mit schon aktiven Instanzen (im BS) der Klasse, den Objekten, durch weitgehend abgeschottete Eigeninstanziierung anhand eigener Klassenkörper, - ob mitgeliefert in den MFC-Sourcen oder selbstimplementiert - , nahezu ausgeschlossen sind.

Das ist sowohl Nachteil wie Vorteil: denn so nimmt dieser statisch aus dem Quellcode generierte Teil NICHT an (automatischen) Updates von BS-Teilen incl. Hardware-Treibern teil. MFC-HW-Treiber sind ein gesondert zu kaufender MFC-Bereich, incl. Option zur Ring-0-Platzierung in Prozessor-Architektur = höchste Berechtigungsstufe (WDF=Windows-Driver-Foundation, vergl. WUDF-Modul in Prozessliste (Win7/64, "Alle Prozesse anzeigen" = Adminstufe erforderlich in taskmgr.exe, wird abgefragt wenn möglich, sonst verweigert) Er entgeht so aber auch jedweder anderen "Veränderung" (vergl. CodeInjection in dll u. a. Infizierungen) in bekannten Standard-Module wie z. B. WinSockets für's Internet usw.

Wo die erhältlichen MFC- (cpp- u. h) - Quellen sich an Standard-INSTANZEN von Betriebsystemklassen wenden, also im Übergang selbstgeschriebenen/einkopierten Quellcodes auf Betriebssystemfunktionen/-klassen wie Systemzeit, Sockets usw., kann im Prinzip wieder selbsgeschriebener Code statt Betriebsystem eingehängt und verwendet werden.

Ggfls. könnte für den verbleibenden Rest, wie welche Implementation eines BS-Elementars wohl zu machen sei, nach einer Disassemblage des EINSCHLÄGIG in Frage stehenden Teils, mittels Vergleich der abstrakten Symboltabellen usw. daraus mit bekannten, funktionell einschlägigen Prototypien und Implementierungen aus Code-Geschichte bzw. Wissenschaft und aus weiterer Akademik helfen.

Die MFC unterstützen eine Abwandlung des Model-View-Controller-Architekturmusters. Es werden die Klassen CDocument und CView zur Verfügung gestellt, wobei mit CDocument das Modell, das heißt der Datenbehälter und mit CView sowohl Ansicht als auch Steuerung implementiert werden. Der in Microsoft Visual Studio enthaltene Assistent ermöglicht es, Frameworks unter Verwendung dieser Architektur automatisch zu erstellen.

Weit darunter liegende, allgemeinere Ursprungsklassen sind CObject sowie CKernelObject und andere, einige hundert bis einige tausend, je nach Umfang der eingekauften Pakete.


Über weite Strecken vermitteln die MFC-Quellen den Eindruck, unmittelbar aus der Source für Win-Builds herauskopiert zu sein. Darauf geben u. a. die Verteilung von Compilersymbolen im Quellcode, bzw. deren Abfrageort und die weitere Compilersteuerung nach diesen Symbolen Hinweise. Siehe auch http://publikuli.de/ULI-Diskusion_CCC-Congress_Krypt-nach-Snowden.html (noch ohne #deeplinks) {bitte zu link nach unten mit Sprungindex hier oben umformen. --87.188.229.62 03:53, 10. Jan. 2014 (CET)

Alternative Bibliotheken

Bekannte Alternativen zu den MFC sind zum Beispiel die Active Template Library (ATL, ebenfalls Microsoft), auch in Kombination mit der Windows Template Library (WTL, von Microsoft als Open Source freigegeben), und die Visual Component Library (Borland). Die .NET-Plattform verwendet ein System namens Windows Forms, das von der MFC (und dem Thunderforms-System von Visual Basic) beeinflusst wurde. Im Gegensatz zu MFC wird zur GUI-Entwicklung dabei kein reines C++, sondern die Microsoft-C++-Spracherweiterung C++/CLI verwendet. Plattformübergreifende Alternativen sind Qt und wxWidgets – beide basierend auf C++ – oder GTK+ – basierend auf C. Sie haben außerdem Sprachanbindungen für Java, Perl, Python, Ruby und andere Sprachen.

Einzelnachweise

  1. MFC. WEBOPEDIA, abgerufen am 15. Juni 2011: „Short for Microsoft Foundation Classes, a large library of C++ classes developed by Microsoft. For Windows-based applications written in C++, MFC provides an enormous headstart. One of the hardest parts of developing C++ programs is designing a logical hierarchy of classes. With MFC, this work has already been done.“

Literatur

  • Frank Budszuhn: Visual C++. Studentenausgabe. Windows-Programmierung mit den MFC. Addison-Wesley, 2004, ISBN 3-8273-2175-1.
  • George Shepherd, David J. Kruglinski: Inside Visual C++ .NET. Microsoft Press Deutschland, 2003, ISBN 3-86063-678-2.
  • Jeff Prosise: Programming Windows with MFC Second Edition. Microsoft Press Books, 1999, ISBN 1-57231-695-0.