Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Evitar OnCloseQuery

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Evitar OnCloseQuery Responder citando

Tengo la aplicación minimizada en el tray de windows junto al reloj, y en el evento OncloseQuery de la misma tengo un mensaje que pide al usuario confirmación para cerrar. El problema viene cuando el usuario apaga o reinicia windows ya que antes de producirse el cierre o reinicio salta el onclosequery del programa mostrando el mensaje que pide confirmación de cierre y eso impide que windos cierre o reinicie. Me gustaría que cuando la aplicación se cierra manualmente SI muestre el mensaje de confirmación (esto ya lo hace), pero que cuando el programa esté minimizado en el tray y se cierre windows NO salte el mensaje de confirmación. ¿alguna idea?
_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

https://cppbuilder.es/viewtopic.php?t=1404
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias por el enlace _LEO , he pillado mas o menos la idea pero no se como aplicar el código, te explico lo ke he hecho:
En la parte private de la clase del Form principal:
void __fastcall WMEndSession(TWMEndSession &Msg);
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_ENDSESSION, TWMEndSession, WMEndSession)
END_MESSAGE_MAP(TForm)

en el .CCP:

void __fastcall TForm1::WMEndSession(TWMEndSession &Msg)
{
cierra_windows = true; //variable global iniciada en false
}

y en el OncloseQuery:

if (cierra_windows == false){
if (Application->MessageBoxA("¿Estás seguro de querer salir de CanviFondos?","¿Seguro?",MB_YESNO|MB_ICONQUESTION)==IDNO){
CanClose = false;
}
}

Cuando reinicio windows me sigue saliendo el mensaje de confirmación de cierre de la aplicación. Confused
_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Disculpa, tienes razón, no lo probé antes.

Cambia el mensaje WM_ENDSESSION por WM_QUERYENDSESSION.

Y añade la siguiente línea a tu método WmEndSession:
Código:
void __fastcall TForm1::WMEndSession(TWMEndSession &Msg)
{
    cierra_windows = true; //variable global iniciada en false
    Msg.Result = true;  // <----
}
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

P.E.R.F.E.C.T.O _Leo Laughing , Una vez mas tus repuestas son garantía de éxito. Por cierto, muy interesante eso de la interceptación de los mensajes de windows.
_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Perdona que te moleste más _Leo Embarassed . Pero resulta que el código al principio iba de maravilla, he continuado con el desarrollo de la aplicación y ahora resulta que no funciona. El fallo consiste en que Windows no se apaga ni reinicia Shocked. Al pulsar el botón Inicio -> Apagar parece que la aplicación se cierra ya que desaparece del tray pero el sistema sigue encendido, pulsando la combinación CTRL+ALT+SUPR pude ver la lista de procesos en funcionamiento en la cual he visto sorprendido como mi aplicación sigue estando ahí. O sea que al intentar cerrar o reiniciar el sistema quita la aplicación de la bandeja del sistema pero la sigue ejecutando en segundo plano y parece ser que eso impide el cierre o reinicio.
_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

No es molestia... no creo que sea de este código ya que es el método que utilizan todo este tipo de programas. Si tu código no es privado y quieres que le eche un vistazo no tengo inconveniente, ya que sin ver nada es muy difícil saber que puede estar pasando:

leosoft ARROBA telefonica PUNTO net
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.