2013-08-10 13 views
18

Conosco un po 'di C++ e C e il progetto con cui sto lavorando ora è un bel po' di programmazione MFC. Qualcuno esperto può dirmi i prerequisiti per l'apprendimento di MFC.Prerequisiti per l'apprendimento della programmazione MFC

Inoltre, quali sono le migliori fonti da cui imparare?

Un particolare libro o serie di video?

so la domanda è troppo generica, ma le risposte me (o chiunque altro che sta scavando in MFC) un sacco

Grazie potrebbe aiutare!

+0

molti anni fa, ho imparato molto dai campioni MFC e note tecniche. – CapelliC

risposta

4

Il prerequisito più importante per l'apprendimento di MFC è C++, seguito dall'interpretazione del funzionamento di Windows.

Il mio libro MFC preferito è Inside Visual C++ di David Kruglinski, che è morto troppo presto. La sua ultima edizione copre MFC con Visual Studio 6, ma i concetti e la maggior parte dei contenuti sono ancora validi.

Per vedere come funziona Windows, il "Petzold" è il libro. (Programmazione Windows di Charles Petzold).

22

+1 Buona domanda!

tl;dr: informazioni su Win32 - in questo ordine.

gran lunga il presupposto più importante MFC è una solida comprensione della Windows API (anche talvolta denominato API Win32 ). Dovrai anche avere familiarità con alcuni concetti chiave del C++ e familiarizzare con gli strumenti. La mia lista di prerequisiti proposti sarebbe:

  1. Ottenere uno sfondo solido nello sviluppo dell'API di Windows.
  2. Familiarizza con concetti rilevanti di C++.
  3. Impara gli strumenti.

Di seguito è riportato un riepilogo di questi passaggi, con collegamenti a informazioni aggiuntive.

1. API di Windows:

L'API di Windows espone tutti i servizi tramite un'interfaccia C. Di conseguenza, la gestione delle risorse è spesso noiosa codice piastra della caldaia. E visibile nel codice sorgente (a volte un incredibile bonus durante la lettura del codice). MFC è - in larga misura - un wrapper automatico di gestione delle risorse (e una libreria di utilità) attorno all'API di Windows, che nasconde la maggior parte della gestione delle risorse e le conversioni dei tipi. Per essere fluente in MFC devi capire cosa nasconde.

per iniziare con l'API di Windows e tutto ciò che serve è un breve riassunto dei principali componenti Suggerirei theForger's Win32 API Tutorial (da forgey di #winprog fama). Copre Message Handling, Windowing, Controlli, e il GDI, e costruisce una solida base.Se hai voglia di investire (ben speso) tempo nell'esplorare le API di Windows in modo più dettagliato, la migliore risorsa fino ad oggi è probabilmente ancora la Programming Windows di Charles Petzold (non essere confuso con lo managed Petzold). Il MSDN è anche una buona risorsa per avere sia una visione d'insieme, nonché documentazione dettagliata per aree specifiche come:

2. Concetti chiave su C++:

MFC è implementato in termini di C++. Mentre precede lo standard ufficiale C++, non troverai troppi affari funky. Molto poco il codice template e certamente nessuna delle nuove funzionalità C++ 11. L'intimità con i concetti base di C++ ti farà guadagnare molto.

Come accennato in precedenza, MFC è in larga misura un involucro di gestione delle risorse attorno all'API di Windows. Spesso esiste una mappatura diretta tra le risorse dell'API di Windows e gli oggetti MFC (come HWND: CWnd o HDC: CDC). Se comprendi i costruttori, i distruttori e la durata degli oggetti sei praticamente tutto in quel dipartimento.

quando si usano contenitori basate su modelli di MFC (come CMap) sarete esposti a modelli, naturalmente. Niente di troppo coinvolto, solo una parametrizzazione di tipo molto semplice per riutilizzare il codice del contenitore e abilitare l'accesso sicuro agli elementi. Un'introduzione ai contenitori MFC può essere trovata qui: Collections.

eccezioni sono utilizzati raramente in MFC, soprattutto quando l'accesso ai file o durante la serializzazione dei dati. Dovresti ancora sapere come scrivere un codice eccezionalmente sicuro; vedrai eccezioni in applicazioni non banali. Una panoramica può essere trovata a Exception Handling in MFC.

Un settore che non è davvero parte di C++, ma ampiamente utilizzato in tutto il MFC è il preprocessore. A prescindere da quanto sia banale la tua applicazione MFC, ci saranno macro. È necessario avere un'ottima conoscenza della sintassi del preprocessore e del funzionamento del preprocessore.

3. Strumenti:

Mentre è possibile scrivere applicazioni MFC con il Blocco note da sola non è certo molto efficace per farlo. Un editor di testo semplice potrebbe essere una buona idea per l'apprendimento della piattaforma, ma quando arriva il momento di rispettare le pietre miliari e le scadenze si vorrà sicuramente utilizzare un IDE potente.

MFC implica praticamente l'utilizzo di Visual Studio e presumo che sia quello che stai utilizzando. Se si utilizza VS6 o VS2010 (o successivo) si avrà accesso allo MFC Class Wizard. Questo è uno strumento che userete frequentemente. Per gestirlo in sicurezza è necessario acquisire familiarità con il codice generato per te. Giocaci, ispeziona il codice generato e prova a costruirne un modello mentale. Se non ha senso, dovresti tornare più tardi.

La procedura guidata della classe MFC genererà quasi certamente il codice del preprocessore. Nasconde una quantità enorme di complessità che devi capire per usare in modo sicuro. Usa l'IDE per navigare attraverso i macro del preprocessore, prova ad espanderli nella tua mente e vedi se capisci il codice risultante.Se hai difficoltà a sbrogliare le invocazioni delle macro, il compilatore invia il codice preelaborato per te usando l'opzione del compilatore /P (Preprocess to a File).

Occasionalmente è necessario cercare o eseguire il debug nel codice sorgente MFC. Per rendere il codice sorgente disponibile per la navigazione sorgente e il debugger è necessario impostare il Directory di VC++ di includere le seguenti (se non è già presente):

$(VCInstallDir)atlmfc\src\mfc 
$(VCInstallDir)atlmfc\src\mfcm 
$(VCInstallDir)atlmfc\src\atl 

seconda della IDE questo si sia fatto attraverso Strumenti -> Opzioni: Progetti e soluzioni -> Elenchi VC++ o la finestra delle proprietà delle impostazioni del progetto.

Ricerca di aiuto: mentre MSDN è la migliore risorsa per la documentazione, la sezione MFC si sente come se fosse in modalità di manutenzione e non ha la stessa attenzione della documentazione dell'API di Windows. Se si riscontra la documentazione MFC mancante, consultare invece la rispettiva documentazione API di Windows, ad esempio CWnd::OnNcDestroy rispetto a WM_NCDESTROY. Quest'ultimo contiene informazioni preziose sull'ordine in cui Windows riceve questo messaggio.

Learning MFC

Una risorsa completa per l'apprendimento MFC è Jeff Prosise' Programming Windows with MFC. Mentre è datato (pubblicato nel 1999) i concetti sono ancora validi oggi. Fornisce una panoramica dei concetti di MFC e approfondisce i dettagli di implementazione. Se ti trovi a dover lottare con il codice generato (preprocessore) questo libro è per te.

Come risorsa online preziosa, MSDN offre informazioni su quasi tutti gli aspetti dello sviluppo di MFC. I concetti principali includono:

Un elenco completo può essere trovato a Concepts.

+1

Il libro può essere datato, ma lo stesso vale per MFC. Solo una cosa che aggiungerei, non è necessario utilizzare i contenitori MFC nel codice moderno poiché quelli della libreria standard sono sufficienti. –

+1

@Mark Un buon consiglio sui contenitori MFC, non c'è davvero bisogno di usarli nel nuovo codice. Tuttavia, MFC implica quasi certamente che hai a che fare con una base di codice esistente e se usi o meno i contenitori MFC oggi, sarai esposto a loro. Vedrò se posso riformulare il paragrafo per incorporare quell'informazione. – IInspectable

+0

Purtroppo la pagina di Forgey è sparita. – sergiol

Problemi correlati