Looking for mfc Answers? Try Ask4KnowledgeBase
Looking for mfc Keywords? Try Ask4Keywords

mfcIniziare con mfc


Osservazioni

Microsoft Foundation Classes , o MFC , è una libreria che fornisce un wrapper orientato agli oggetti attorno all'API Win32. Incapsulando l'API Win32 "raw" nelle classi C ++, MFC semplifica notevolmente la creazione di applicazioni GUI e la gestione delle risorse.

MFC è stato intorno a un tempo molto lungo. È stato introdotto per la prima volta nel 1992 con la versione 7 del compilatore C / C ++ di Microsoft. In questo momento, lo sviluppo del C ++ stava appena iniziando a decollare. Le versioni successive di Visual Studio sono state fornite con versioni significativamente migliorate di MFC. È ancora incluso con l'ultima versione di Visual Studio 2015. Ma le sue radici legacy sono purtroppo abbastanza visibili. Poiché la maggior parte di esso è stata sviluppata prima della standardizzazione del linguaggio C ++, le classi MFC non utilizzano pienamente le moderne funzionalità C ++ come i modelli, forniscono le proprie implementazioni personalizzate di altre funzionalità standard di C ++ come RTTI e utilizzano molti idiomi non standard. . Questi fatti rendono quasi impossibile compilare un'applicazione MFC con qualsiasi compilatore diverso da Microsoft. Tra l'altro, MFC è ben integrato in Visual Studio, rendendo lo sviluppo molto più semplice.

Durante lo sviluppo iniziale, la libreria era nota come Application Framework Extensions (abbreviata in AFX). Il reparto marketing in seguito cambiò il suo nome in MFC, ma era troppo tardi per cambiare il codice, quindi gran parte del codice fa ancora riferimento a "Afx" invece di "Mfc". Un esempio evidente è il file di intestazione precompilato standard generato automaticamente da Visual Studio: è denominato StdAfx.h .

Il 7 aprile 2008, Microsoft ha rilasciato un aggiornamento alle classi MFC come aggiornamento out-of-band a Visual Studio 2008 e MFC 9. L'aggiornamento presenta nuovi costrutti dell'interfaccia utente, inclusi i nastri (simili a quelli di Microsoft Office 2007) e widget dell'interfaccia utente associati, barre degli strumenti completamente personalizzabili, pannelli di ancoraggio (come Visual Studio 2005) che possono essere liberamente flottati o ancorati a qualsiasi lato e schede di documenti. La nuova funzionalità viene fornita in nuove classi in modo che le vecchie applicazioni continuino ancora a funzionare. Questo aggiornamento si basa sulla BCGControlBar Library Professional Edition di BCGSoft ed è stato denominato MFC Feature Pack .

Quindi ora MFC è costituito da due librerie con approcci diversi:

  • MFC classico (wrapper per API Win32).
  • Feature pack MFC (set misto da controlli API Win32 e nuovi controlli per il disegno automatico, come la barra multifunzione).

Guarda anche:

Un programma MFC di base

// 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;
 

Sommario:

IDD_DIALOG1 dovrebbe essere l'ID di una finestra di dialogo definita in un file di risorse di progetto creato da un editor di risorse, come quello incorporato in Visual Studio. (In generale, un file di risorse ha l'estensione .rc.) Per personalizzare il comportamento di una finestra di dialogo, è possibile derivare una nuova classe da CDialog.

Una finestra di dialogo modale esegue il proprio ciclo di messaggi. La chiamata "dlg.DoModal ();" non ritorna fino a quando la finestra di dialogo non è stata chiusa dall'utente.

Se avessimo restituito TRUE da InitInstance (), avrebbe avviato il ciclo dei messaggi dell'applicazione. Viene utilizzato quando si dispone di un'app più complessa e non basata su finestre di dialogo.