Pergunta

Qual é a maneira correta de um aplicativo MFC se fechar de maneira limpa?

Foi útil?

Solução

Encerrar programaticamente um aplicativo 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

Outras dicas

AfxGetMainWnd()->PostMessage(WM_CLOSE);

Em apoio à resposta de @Mike, o motivo para usar esse método é acionar a sequência de desligamento correta.Especialmente importante para aplicações MDI/SDI porque permite que os documentos solicitem o salvamento antes da saída ou o cancelamento da saída.

@Matt Noguchi, seu método irá contornar essa sequência (que pode ser o efeito desejado, suponho, mas você provavelmente conseguiu problemas se você estiver causando um curto-circuito na desmontagem normal.

PostQuitMessage( [exit code] );

Se for um aplicativo baseado em diálogo, você pode fazer isso chamando a função EndDialog().

Se for um aplicativo baseado em SDI/MDI, você pode chamar DestroyWindow.Mas antes disso você mesmo precisará fazer a limpeza (fechar documentos, desalocar memória e recursos, destruir quaisquer janelas adicionais criadas, etc.).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top