Introduzione a MFC C++

 C Programming >> Programmazione C >  >> Tags >> MFC
Introduzione a MFC C++

MFC C++ sta per Microsoft Foundation Library che è la libreria basata su un approccio orientato agli oggetti e viene utilizzata per creare e sviluppare le app che vengono eseguite sul sistema operativo Windows. È iniziato nel 1992 dall'organizzazione Microsoft e presto è diventato molto popolare. Sebbene Microsoft sviluppi molte altre applicazioni, MFC è ancora la più preferita dagli sviluppatori.

Cos'è MFC C++?

  • MFC è la libreria che sta per Microsoft Foundation Class che include molte costanti, funzioni, classi e tipi di dati che rendono semplice la creazione di applicazioni per i sistemi operativi che fanno parte della famiglia Microsoft Windows. Nelle applicazioni MFC, varie classi sono organizzate nella struttura gerarchica dell'albero per implementare le operazioni e le funzionalità necessarie. Ad esempio, la classe CObject è l'antenata di tutte le classi di C++ che si scrivono nell'applicazione MFC. Tutte le altre classi sono classi figlie dirette o indirette di CObject.
  • MFC è compatibile con la maggior parte delle applicazioni come C++ 11, Boost e molte altre. Tuttavia, ha la caratteristica di non portabilità poiché utilizza l'interfaccia utente grafica come origine. Inoltre, ci sono molte differenze che sono state create tra C++ e MFC, alcune delle quali sono l'uso di funzioni lambda, valori letterali definiti dall'utente, manipolazione di data e ora, manipolazione di stringhe, semantica dello spostamento, iteratore- loop basati e funzioni lambda. L'architettura MFC è quindi vincolata alle vecchie metodologie di codifica che hanno quel tipo di pattern. Ecco perché le prestazioni dell'applicazione in caso di miglioramenti apportati alla qualità influiscono sull'esperienza dello sviluppatore DX poiché rallenta.

Futuro MFC C++

Il futuro di MFC C++ ha un'implementazione estensiva e utilizza nelle applicazioni degli scenari in tempo reale come l'implementazione della distribuzione di pipe automatizzate, il cloud computing, l'infrastruttura come codice e i contenitori immutabili. Gli unici sforzi extra di cui abbiamo bisogno per fare attenzione a rimuovere la GUI che è l'interfaccia utente grafica di MFC C++ in modo che possa funzionare anche su altri sistemi operativi come Linux, e dovrai implementare la codifica nella configurazione come codice in modo da poterne trarre i seguenti vantaggi in futuro.

Inizia il tuo corso di sviluppo software libero

Sviluppo Web, linguaggi di programmazione, test software e altro

  • I segnali e le logiche di business possono essere rimossi dal loop semplicemente sostituendo l'MFC che prevede il loop di window message processing con il semplice ciclo while all'interno del quale possiamo collocare la nostra funzione principale che è quella aggiornata e che implementa la nostra logica aziendale.
  • Le librerie C++ di natura standard possono essere utilizzate al posto dei contenitori MFC.
  • Possiamo rendere il nostro sistema strumenti che utilizzeremo multipiattaforma. Quindi, ad esempio, il file vcxproj può essere sostituito con CMake, fornito e supportato da Visual Studio sul sistema operativo Windows e molti altri sistemi operativi e ambienti di sviluppo come VSCode.
  • Possiamo scegliere la versione e il compilatore che useremo per il nostro sviluppo. Si noti che le funzionalità più recenti dei linguaggi di programmazione C++ sono supportate solo dal sistema operativo Windows dell'ultima versione. Questa versione è solitamente la versione più recente di quella che è impostata per impostazione predefinita nell'applicazione installata nel sistema.

Per implementare le modifiche di cui sopra, è possibile utilizzare il codice seguente e confrontarlo con il codice esistente sul sistema. Successivamente, possiamo scorrere il codice di mappatura nel tuo MFC.

Codice:

CMap<CString, LPCSTR, cSampleBar *, cSampleBar *> educbaSampleMap;
cSampleBar sampleFoo(3.1415);
educbaSampleMap.SetAt("LongBar"), &sampleFoo);
POSITION educbaSamplePosition = educbaSampleMap.GetStartPosition();
while (educbaSamplePosition != NULL)
{
cSampleBar * educbaPointerBar;
CString string;
// Retrieve value and key of string (educbaPointerBar)
educbaSampleMap.GetNextAssoc(educbaSamplePosition, string, educbaPointerBar);
// Code to write for iterating using loop statements
}
In case of C++ 17 version the constructs can be compared to following code snippet –
std::educbaUnorderedMap<std::string, CBar> educbaSampleMap;
educbaSampleMap.emplace(“educbaLongBar”, 3.1415);
for(auto & [string, bar] : educbaSampleMap)
{
// Code to write for iterating using loop statements
}

Creazione di un'applicazione MFC

Per creare una nuova applicazione di MFC, puoi seguire i passaggi seguenti forniti se desideri creare un'app MFC basata su finestre di dialogo.

  • Fai clic sul menu principale, quindi scegli l'opzione File e quindi fai clic su Nuovo. Quindi, procedi con la scelta dell'opzione del progetto.
  • Inoltre, puoi cercare MFC semplicemente cercandolo nella casella di ricerca e quindi scegliere l'opzione App MFC dall'elenco dal risultato.
  • Puoi apportare le modifiche alle impostazioni predefinite secondo le tue esigenze e quindi fare clic su Crea in modo da poter accedere alla procedura guidata dell'applicazione MFC.
  • Questa è la schermata dove puoi apportare le modifiche alle tue configurazioni secondo necessità e poi cliccare su Fine.

La schermata delle configurazioni appare come mostrato di seguito.

Risultato:

Crea un nuovo progetto MFC

Per creare un nuovo progetto di MFC C++, è necessario seguire i passaggi indicati di seguito:

  • Fai clic sul menu che viene fornito in alto e quindi fai clic sull'opzione File; inoltre, dovrai fare clic su Nuovo progetto.
  • Dopodiché, devi fare clic sui tipi di progetto e selezionare l'opzione Visual C++.
  • Dovrai quindi fare clic sul progetto Win32 dall'elenco dei modelli forniti.
  • Puoi menzionare qualsiasi nome che desideri assegnare al tuo progetto e quindi fare clic sul pulsante OK in basso.

L'interfaccia apparirà come mostrato di seguito.

Risultato:

Esempio di MFC C++

Di seguito è riportato l'esempio citato:

Puoi fare riferimento alla documentazione ufficiale di Microsoft, dove su Github sono forniti vari esempi di esempio.

Per farlo, puoi visitare il seguente link:https://docs.microsoft.com/en-us/cpp/overview/visual-cpp-samples?view=msvc-160.

Consideriamo un esempio in cui creeremo un'applicazione C++ MFC.

Codice:

// EducbaSampleMFC.h
// Class for application
class CEducbaSampleMFC : public CEducbaWinApplication
{
public:
virtual BOOL InitInstance();
};
// class for implementing frame in windows
class CEducbaFrame : public CEducbaWindows
{
public:
CEducbaFrame();
protected:
// Further two messages will be the part of MFC dispatch system of library
afx_msg void SampleLeftButtonPress(UINT sampleFlags, CPoint point);
afx_msg void OccurrenceOfPaint();
MSG_MAP_DECLARATION()
};
EducbaSampleMFC.cpp implementation file for the EducbaSampleMFCExample application:
#include <afxwin.h>
#include "educba_sample_app.h"
CEducbaSampleMFC sampleObj; // object of CEducbaSampleMFC class
BOOL CEducbaSampleMFC::InitInstance()
{
MFCMainWindow = new CEducbaFrame();
MFCMainWindow->ShowWindow(m_nCmdShow);
MFCMainWindow->UpdateWindow();
return TRUE;
}
BEGIN_MESSAGE_MAP(CEducbaFrame, CEducbaWindows)
ON_WM_LBUTTONDOWN()
ON_WM_PAINT()
END_MESSAGE_MAP()
CEducbaFrame::CEducbaFrame()
{
Create(NULL, "EducbaSampleMFCExample Application");
}
void CEducbaFrame::SampleLeftButtonPress(UINT sampleFlags, CPoint point)
{
TRACE("Entering CEducbaFrame::SampleLeftButtonPress - %lx, %d, %d\n", (long) sampleFlags, point.x, point.y);
}
void CEducbaFrame::OccurrenceOfPaint()
{
CPaintDC dc(this);
dc.TextOut(0, 0, "Educba is the best site to increase your knowledge!");
}

Risultato:

Conclusione

MFC C++ è l'acronimo di Microsoft Foundation Library, ovvero la libreria basata su un approccio orientato agli oggetti, iniziata nel 1992 dall'organizzazione Microsoft e diventata presto molto popolare. Viene utilizzato per creare e sviluppare le app che funzionano sul sistema operativo Windows.