Pregunta

¿Cuál es la forma correcta para que una aplicación MFC se cierre limpiamente?

¿Fue útil?

Solución

Terminar programáticamente una aplicación MFC

 void ExitMFCApp()
   {
        // same as double-clicking on main window close box
        ASSERT(AfxGetMainWnd() != NULL);
        AfxGetMainWnd()->SendMessage(WM_CLOSE);
   }

http://support.microsoft.com/kb/117320

Otros consejos

AfxGetMainWnd()->PostMessage(WM_CLOSE);

En apoyo de la respuesta de @ Mike, la razón para utilizar este método es activar la secuencia de apagado correcta.Especialmente importante para aplicaciones MDI/SDI porque brinda la posibilidad de que los documentos soliciten guardarlos antes de salir o cancelar la salida.

@Matt Noguchi, tu método evitará esta secuencia (que puede ser el efecto deseado, supongo, pero probablemente tengas problemas si estás provocando un cortocircuito en el desmontaje normal.

PostQuitMessage( [exit code] );

Si se trata de una aplicación basada en diálogos, puede hacerlo llamando a la función EndDialog().

Si se trata de una aplicación basada en SDI/MDI, puede llamar a DestroyWindow.Pero antes de eso, deberá realizar la limpieza usted mismo (cerrar documentos, desasignar memoria y recursos, destruir cualquier ventana adicional creada, etc.).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top