title: Microsoft Foundation Classes
text: # Microsoft Foundation Classes
  
  Microsoft Foundation Classes, meglio conosciuta con l'acronimo MFC, è una libreria di classi C++ prodotta da Microsoft con lo scopo di incapsulare le Windows API. È definita una classe per ciascun oggetto di Windows dotato di handle, e anche per le finestre predefinite e per i controlli comuni (common controls).
  
  ## Descrizione
  
  MFC è stata introdotta nel 1992 per essere usata con le versioni a 16 bit di Windows, come parte del tentativo di Microsoft di guadagnare quote di mercato nell'area degli strumenti di sviluppo, ed è stata progettata per essere una sorta di rassegna delle potenzialità del linguaggio di programmazione C++. In quel tempo infatti il C++ aveva appena iniziato a sostituire il linguaggio C nello sviluppo di software commerciale, e Microsoft aveva da poco aggiunto il supporto del C++ al suo compilatore C.
  
  Più o meno nello stesso periodo venne lanciato da Borland un prodotto concorrente denominato Object Windows Library (OWL), inserito nel compilatore Turbo C di Borland. Siccome aveva una struttura object oriented superiore, OWL per un certo periodo ebbe più successo di MFC, tuttavia perse quote di mercato quando i suoi aggiornamenti mancarono di supportare le nuove caratteristiche di Windows, ed in seguito non venne più prodotto.
  
  Quando MFC venne introdotta, le potenze di calcolo e la memoria disponibile nei computer erano risorse limitate. Per questo motivo Microsoft decise per la gestione dei messaggi di windows di non avvalersi delle funzioni virtuali, uno dei meccanismi più potenti offerti dal C++ ma fonte di un discreto overhead, e di utilizzare al loro posto una speciale sintassi basata su macro. Siccome però le macro non dispongono di un sufficiente controllo dei tipi da parte del compilatore, il loro uso è stato spesso fonte di bug. Oltre alle code di messaggi, anche la serializzazione e la gestione delle eccezioni furono basate su macro anziché su caratteristiche native del C++ che proprio per questo tardarono ad affermarsi negli anni. Queste caratteristiche sono ancora presenti nelle versioni attuali di MFC.
  
  Da un punto di vista pratico, lo sviluppo di programmi Windows con MFC risulta molto più rapido e semplificato rispetto all'uso diretto delle Windows API, anche se la loro conoscenza è quasi indispensabile per un programmatore MFC a causa della poca astrazione introdotta dalla libreria di classi. Uno dei vantaggi maggiori deriva dal fatto che gli handle degli oggetti vengono gestiti automaticamente dalla libreria e chiusi quando gli oggetti vengono distrutti.
  
  Per lungo tempo MFC è stata promossa da Microsoft come il proprio strumento di punta nello sviluppo di applicazioni commerciali. Già con l'avvento di Visual Basic però, MFC iniziò a declinare perché sembrò che C++ e MFC fossero troppo complesse per molti programmatori. Più recentemente, la nascita della piattaforma .NET ha condannato ad un ruolo di nicchia MFC anche se Microsoft ne ha confermato il supporto, almeno per il futuro prossimo.
  
  