Cerrar aplicación

23/04/2004 - 09:47 por Sergio | Informe spam
Creo que esto ya ha salido, pero no lo he encontrado. Quiero cerrar la
aplicación en un punto concreto de la ejecución, pero no he econtrado la
forma de hacerlo. Pensaba que llamando a OnClose(); era suficiente, pero
no. Si alguien me pudiera decir como hacerlo se lo agradeceria.

Preguntas similare

Leer las respuestas

#6 Rodrigo Corral [MVP]
23/04/2004 - 15:40 | Informe spam
bool bClose = false;

{
CDialog dl; //O como declares el dialogo
bool bClose = (dl.DoModal() != IDOK));
}

if (bClose)
{
MessageBox("Sin videos no se puede trabajar","Eventer",MB_ICONEXCLAMATION);
ASSERT(AfxGetApp()->m_pMainWnd != NULL);
AfxGetApp()->m_pMainWnd->SendMessage(WM_CLOSE);
}

Prueba esto por favor.


Rodrigo Corral González [MVP]

microsoft.public.es.vc FAQ
http://vcfaq.europe.webmatrixhosting.net
Respuesta Responder a este mensaje
#7 Sergio
23/04/2004 - 16:17 | Informe spam
Rodrigo Corral [MVP] escribió:
bool bClose = false;

{
CDialog dl; //O como declares el dialogo
bool bClose = (dl.DoModal() != IDOK));
}

if (bClose)
{
MessageBox("Sin videos no se puede trabajar","Eventer",MB_ICONEXCLAMATION);
ASSERT(AfxGetApp()->m_pMainWnd != NULL);
AfxGetApp()->m_pMainWnd->SendMessage(WM_CLOSE);
}

Prueba esto por favor.




No entiendo muy bien porque declaras dos veces bClose, así que me
imagino que es un problema del copy/paste.
He probado lo que mas dicho, y no me funciona.
Me ha quedado así:

bClose = (dl.DoModal() != IDOK);
if (bClose) {
MessageBox("Sin videos no se puede trabajar","Eventer",MB_ICONEXCLAMATION);
ASSERT(AfxGetApp()->m_pMainWnd != NULL);
AfxGetApp()->m_pMainWnd->SendMessage(WM_CLOSE);
}

Y como ya te he dicho, no hay manera. He estado mirando mi codigo a ver
si hacia algo extraño con los mensajes, y no es el problema, ya que en
el unico sitio que he visto que los trato es en PreTrasnlateMessage, y
en este punto del programa no hay ningún problema, hace la llamada a
CFormView::PreTranslateMessage sin que haya habido ningún cambio.

Me estoy dando cuenta de que tu ejemplo es para asegurarte de que paso
por AfxGetApp() no? Si era por eso, si que paso, y es lo que me da
los errores luego, ya que el programa no para su ejecución ahí, sino que
sigue en la siguiente linea.
Respuesta Responder a este mensaje
#8 Rodrigo Corral [MVP]
23/04/2004 - 16:30 | Informe spam
/******************************
Codigo correcto
*******************************/

bool bClose = false;

{ //!!!!!!!!!!!!!!!!!Importante las llaves!!!!!!!!!!!!!!!!!!!!
CDialog dl; //O como declares el dialogo
bClose = (dl.DoModal() != IDOK));
}

if (bClose)
{
MessageBox("Sin videos no se puede trabajar","Eventer",MB_ICONEXCLAMATION);
ASSERT(AfxGetApp()->m_pMainWnd != NULL);
AfxGetApp()->m_pMainWnd->SendMessage(WM_CLOSE);
}

Lo que trato de asegurar es que el dialogo se ha destruido antes de que
trates de terminar la aplicación. Creo que los problemas podrian venir de
que cuando intentas acabar la aplicación el dialogo sige vivo.


Rodrigo Corral González [MVP]

microsoft.public.es.vc FAQ
http://vcfaq.europe.webmatrixhosting.net
Respuesta Responder a este mensaje
#9 Hernán
23/04/2004 - 17:18 | Informe spam
Probá a postear el WM_CLOSE. A dejarlo en la cola de mensajes. Sino, a
donde vuelve SendMessage(), y el bloque desde donde invocaste a
SendMessage()...

Hernán (28)
Quilmes (ar)
Respuesta Responder a este mensaje
#10 Sergio
23/04/2004 - 18:48 | Informe spam
Rodrigo Corral [MVP] escribió:

/******************************
Codigo correcto
*******************************/

bool bClose = false;

{ //!!!!!!!!!!!!!!!!!Importante las llaves!!!!!!!!!!!!!!!!!!!!
CDialog dl; //O como declares el dialogo
bClose = (dl.DoModal() != IDOK));
}

if (bClose)
{
MessageBox("Sin videos no se puede trabajar","Eventer",MB_ICONEXCLAMATION);
ASSERT(AfxGetApp()->m_pMainWnd != NULL);
AfxGetApp()->m_pMainWnd->SendMessage(WM_CLOSE);
}

Lo que trato de asegurar es que el dialogo se ha destruido antes de que
trates de terminar la aplicación. Creo que los problemas podrian venir de
que cuando intentas acabar la aplicación el dialogo sige vivo.




Pues no es por eso, lo he probado tal cual lo pones y no se cierra.
La verdad es que yo tampoco entiendo porque me pasa esto.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida