Cuál es la forma correcta de salir programáticamente de una aplicación MFC?

Utilizando Windows MFC C ++. Tengo una aplicación de terceros que llama a un método definido por el usuario en mi clase derivada de CWinApp. Este método se llama después de InitInstance (). Si hay un error en este método, de modo que se lanza una excepción y se atrapa en un bloque try / catch, me gustaría salir de la aplicación desde el bloque catch. ¿Cuál es la forma canónica y correcta de dejar de fumar?

ACTUALIZAR

Serge Creo que es correcto que en InitInstance () devolver falso es la forma correcta de salir de la aplicación. Sin embargo, ahora suponga que quiero salir del controlador OnInitDialog () de una clase derivada de CDialog, ¿cuál es la forma correcta de hacerlo?

UPDATE 2

Para mí, encontré que llamar a PostMessage (WM_CLOSE) es la mejor manera desde mi clase no modal derivada de CDialog. Todos los demás métodos para dejar de fumar que intenté provocarían alguna excepción u otra en algunas circunstancias.

Aquí hay un ejemplo de cómo 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;
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta