Per l'applicazione basata su finestra di dialogo MFC, è possibile inserire il codice di finalizzazione nel metodo di classe applicazione InitInstance
, immediatamente dopo la chiamata di dialogo principale DoModal
. Per altri tipi di applicazioni MFC (MDI, SDI), il codice di finalizzazione viene di solito inserito nel metodo ExitInstance
.
La differenza tra l'applicazione basata su finestra di dialogo e le applicazioni SDI/MDI, è che InitInstance
nelle applicazioni basate su finestre restituisce FALSE e le uscite dell'applicazione: tutte le azioni vengono eseguite nella chiamata principale DoModal
.
Si può preferire usare ExitInstance
per tutti i tipi di applicazione, dovrebbe funzionare anche.
Modifica. Se si desidera creare codice di pulizia all'interno della classe di dialogo, WM_DESTROY
(già citato da Roger Rowland) è il posto migliore di WM_CLOSE
. A volte possiamo gestire il messaggio WM_CLOSE
e impedire la chiusura di una finestra di dialogo, ad esempio, chiedendo "Esci dal programma? Sì - No". Nel caso in cui si desideri utilizzare alcune finestre secondarie, esse esistono nei gestori di messaggi WM_CLOSE
e WM_DESTROY
e non esistono in un distruttore di finestre di dialogo. Inoltre, la coda dei messaggi non esiste quando viene chiamato il distruttore della finestra di dialogo principale, quindi in questo caso non utilizzare la messaggistica di Windows.
fonte
2013-04-09 14:04:33
Beh, di solito lo metto in un gestore 'WM_DESTROY', ma preferisco quello al distruttore perché so che l'infrastruttura MFC sarà ancora viva e quando arriverò al master, non sono sicuro :-) Di solito riservo al dtor solo l'eliminazione delle allocazioni dell'heap. –