Looking for mfc Keywords? Try Ask4Keywords

mfcErste Schritte mit mfc


Bemerkungen

Die Microsoft Foundation Classes oder MFC ist eine Bibliothek, die einen objektorientierten Wrapper für die Win32-API bereitstellt. Durch die Kapselung der "rohen" Win32-API in C ++ - Klassen vereinfacht MFC das Erstellen von GUI-Anwendungen und das Verwalten von Ressourcen erheblich.

MFC gibt es schon sehr lange. Es wurde erstmals 1992 mit der Version 7 des C / C ++ - Compilers von Microsoft eingeführt. Zu diesem Zeitpunkt begann die Entwicklung von C ++ gerade erst. Nachfolgende Versionen von Visual Studio wurden mit erheblich verbesserten Versionen von MFC ausgeliefert. Es ist immer noch in der neuesten Version von Visual Studio 2015 enthalten. Die alten Wurzeln sind jedoch leider sehr gut sichtbar. Da das meiste davon vor der Standardisierung der C ++ - Sprache entwickelt wurde, nutzen die MFC-Klassen die modernen C ++ - Funktionen wie Vorlagen nicht vollständig, stellen eigene benutzerdefinierte Implementierungen anderer C ++ - Standardfunktionen wie RTTI bereit und verwenden viele nicht standardisierte Idiome . Diese Tatsachen machen es fast unmöglich, eine MFC-Anwendung mit einem anderen Compiler als dem von Microsoft zu kompilieren. Auf der positiven Seite ist MFC jedoch gut in Visual Studio integriert, was die Entwicklung erheblich vereinfacht.

Während der frühen Entwicklung war die Bibliothek als Application Framework Extensions (kurz AFX) bekannt. Die Marketingabteilung änderte später ihren Namen in MFC, aber es war zu spät, um den Code zu ändern. In diesem Code wird immer noch auf "Afx" anstelle von "Mfc" verwiesen. Ein bemerkenswertes Beispiel ist die vorkompilierte Standard-Headerdatei, die automatisch von Visual Studio generiert wird: StdAfx.h .

Am 7. April 2008 veröffentlichte Microsoft ein Update für die MFC-Klassen als Out-of-Band-Update für Visual Studio 2008 und MFC 9. Das Update enthält neue Benutzeroberflächenkonstrukte, einschließlich der Farbbänder (ähnlich wie Microsoft Office 2007) und Zugehörige UI-Widgets, vollständig anpassbare Symbolleisten und Andockfenster (wie Visual Studio 2005), die entweder frei schwebend oder an einer beliebigen Seite und auf Dokumentregistern angedockt werden können. Die neue Funktionalität wird in neuen Klassen bereitgestellt, sodass alte Anwendungen weiterhin ausgeführt werden. Dieses Update baut auf der BCGControlBar Library Professional Edition von BCGSoft auf und wurde als MFC Feature Pack bezeichnet .

Nun besteht MFC aus zwei Bibliotheken mit unterschiedlichen Ansätzen:

  • Klassisches MFC (Wrapper für Win32-API).
  • MFC Feature Pack (gemischter Satz aus Win32-API-Steuerelementen und neuen selbstzeichnenden Steuerelementen, z. B. Multifunktionsleiste).

Siehe auch:

Ein grundlegendes MFC-Programm

// Include the MFC header:
// (you do not need to and should not include the standard Windows headers, e.g. 
// Windows.h)
#include <AfxWin.h>               // MFC core and standard components
// The following header defines resource constants, such as dialog and control IDs:
#include "resource.h"

// The basic element of an MFC application is a class that inherits from CWinApp.
class CMyApp : public CWinApp
{
    // This gets called as the application gets initialized.
    virtual BOOL InitInstance()
    {
        // Initialize a CDialog object to show in a moment.
        CDialog dlg(IDD_DIALOG1);
        // Display the dialog box as a modal dialog box.
        dlg.DoModal();

        // Return FALSE from this method to exit the application.
        return FALSE;
    }
};

// The one and only application object.
CMyWinApp theApp;
 

Zusammenfassung:

IDD_DIALOG1 sollte die ID eines Dialogfelds sein, das in einer Projektressourcendatei definiert ist, die von einem Ressourceneditor erstellt wurde, z. B. dem in Visual Studio integrierten. (Eine Ressourcendatei hat im Allgemeinen die Erweiterung .rc.) Um das Verhalten eines Dialogs anzupassen, können Sie eine neue Klasse von CDialog ableiten.

Ein modales Dialogfeld führt eine eigene Meldungsschleife aus. Der Aufruf "dlg.DoModal ();" kehrt nicht zurück, bis der Dialog vom Benutzer geschlossen wurde.

Wenn wir von InitInstance () TRUE zurückgegeben hätten, hätte dies die Meldungsschleife der Anwendung gestartet. Dies wird verwendet, wenn Sie eine komplexere, nicht dialogbasierte App haben.