Utilizzo di Windows MFC C++. Ho un'app di terze parti che chiama un metodo definito dall'utente nella mia classe derivata CWinApp. Questo metodo viene chiamato dopo InitInstance(). Se c'è un errore in questo metodo, tale che un'eccezione viene lanciata e catturata in un blocco try/catch, vorrei uscire dall'applicazione dal blocco catch. Qual è il modo canonico e corretto per uscire?Qual è il modo corretto per chiudere a livello di programmazione un'applicazione MFC?
UPDATE:
Serge credo sia giusto che in InitInstance() restituendo falso è il modo corretto di chiudere l'applicazione. Tuttavia, ora supponiamo di voler uscire dal gestore OnInitDialog() di una classe derivata da CDialog, qual è il modo corretto per farlo.
UPDATE 2
Per quanto mi riguarda, ho trovato chiamando PostMessage (WM_CLOSE) per essere il modo migliore dal mio non modale classe derivata CDialog. Tutti gli altri metodi di smettere ho cercato di sollevare qualche eccezione o altro in alcune circostanze.
Ecco un esempio di come lo uso:
BOOL SomeDialog::OnInitDialog()
{
CDialog::OnInitDialog();
::OleInitialize(nullptr);
try
{
// ...load settings file here
}
catch(...)
{
PostMessage(WM_CLOSE);
return TRUE;
}
// return TRUE unless you set the focus to a control
return TRUE;
}
Ah! È un'app basata su Dialog. Vedi la mia risposta modificata. –