2009-02-23 6 views
7

Sto lavorando a un programma MFC iniziato nei giorni VC6. Allora c'era un mago di classe che usava un sacco di decoratori e markup nei commenti per analizzare i file di classe.Sono cose come i decoratori "afx_msg" ancora utilizzati da VS/MFC?

Ad esempio, inserirà afx_msg davanti ai gestori di messaggi che ha gestito. Contrassegnerebbe un blocco di codice con // {{AFX_MSG_MAP (TheApp) e /}} AFX_MSG_MAP commenti per aiutarlo a trovare le parti della mappa messaggi che desiderava gestire.

AFAIK, questo non è più necessario. Oltre a ciò, ci sono stati così tanti difetti con il mago della classe che abbiamo dovuto eseguire molte modifiche manuali di questi blocchi gestiti e non l'abbiamo mai usato molto spesso.

Ci sono altri motivi per continuare ad usare afx_msg e il suo tipo?

risposta

10

afx_msg esiste ancora ma è sempre stato puramente informativo. Un decoratore come lo metti. È sempre stato # definito come una stringa vuota.

i marcatori {{e}} non sono più necessari dal VS2003: VS ora è abbastanza intelligente da mettere le cose nel posto giusto senza dover fare affidamento su questi indicatori. Noterai che VS2003 + non include più queste linee nei progetti che crea.

2

AFAIK, afx_msg non è più utilizzato. L'altro marker è stato utilizzato per aiutare CW a capire dove mettere le cose, e alcuni di essi potrebbero ancora essere utilizzati (ad esempio: posizione della mappa dei messaggi nei file .cpp). Quelli nei file di intestazione sono probabilmente più sicuri da rimuovere, ma non li porterei fuori arbitrariamente.

Una cosa che si potrebbe fare: avviare un nuovo progetto MFC fittizio nella versione VS attuale, aggiungere una classe finestra e alcuni gestori e osservare le notazioni attualmente create. Qualcosa che non è stato inserito probabilmente non è più utilizzato, e qualsiasi cosa ancora inserita è probabilmente ancora usata in qualche modo).

PS: MS è ben consapevole dei problemi con l'attuale modifica CW, e mi è stato detto che saranno indirizzati in larga misura in VS2010 ... vedremo.

1

AFAIK questi non sono più necessari. La procedura guidata di classe in VS2008 non genererà più i commenti e non utilizzerà i commenti esistenti generati dalle versioni precedenti. La procedura guidata di classe continuerà a generare i decoratori afx_msg, ma non vengono utilizzati.

La mia regola generale quando si tratta di codice dai VC6 giorni, è rimuovere tutti i commenti, ma lasciare i decoratori afx_msg. Trovo utili i decoratori durante la lettura del codice, per sottolineare che un metodo è un gestore di messaggi.

0

In VS2008, afx_msg è un #define vuoto. Ho rimosso tutti gli altri dreck inseriti in ClassWizard dalla nostra applicazione che è stata aggiornata da VC6 al 2005. È anche vero che non utilizzo affatto ClassWizard.