PDA

View Full Version : [C] impedire chiusura programma tramite chiusura finestra


biowep
01-07-2011, 21:53
Ciao, esiste qualche modo di eseguire delle istruzioni prima che il programma si chiuda?
Esempio, il programma è in corso ma un utente decide di chiudere il programma cliccando sulla X in alto alla destra della finestra, posso eseguire altre istruzioni prima che il programma si chiuda?
Qualcosa del tipo bloccarlo oppure impedire proprio all'utente di chiuderlo.

tuccio`
01-07-2011, 22:24
http://www.cplusplus.com/reference/clibrary/cstdlib/atexit/

anche se non sono sicuro che vengano chiamate sempre le funzioni aggiunte con atexit :/

tomminno
02-07-2011, 00:17
Ciao, esiste qualche modo di eseguire delle istruzioni prima che il programma si chiuda?
Esempio, il programma è in corso ma un utente decide di chiudere il programma cliccando sulla X in alto alla destra della finestra, posso eseguire altre istruzioni prima che il programma si chiuda?
Qualcosa del tipo bloccarlo oppure impedire proprio all'utente di chiuderlo.

La risposta dipende dal sistema operativo in uso. Suppongo Windows.
Limitandosi alle Win32 se non ricordo male dovrebbe bastare gestire l'evento SC_CLOSE.

biowep
02-07-2011, 13:32
@tuccio` mi sembra che in condizioni normali funzioni, ma la chiusura è estremamente lenta (anche se deve eseguire una istruzione semplice).

@tomminno (si, windows) non sono sicuro di sapere cosa sia un evento, potresti farmi un esempio completo (non ho trovato materiale in italiano abbastanza esaustivo)
sono nella fase iniziale di apprendimento della programmazione

tuccio`
02-07-2011, 14:01
il consiglio di tomminno è valido se hai un'applicazione con una finestra (una gui insomma), e vuoi fare qualcosa quando viene chiusa quella.. Windows ti mette a disposizione nell'api un modo per gestire anche l'evento di chiusura della console (SetConsoleCtrlHandler (http://msdn.microsoft.com/en-us/library/ms686016%28v=VS.85%29.aspx) ti permette di gestione gli della console, con l'inglese ti conviene farci il callo :asd: ).. però non credo convenga, proprio perché c'è la atexit che è portabile.. detto questo, mi sembra strano che ti rallenti, non dovrebbe far altro che chiamare la tua funzione

biowep
02-07-2011, 14:26
il consiglio di tomminno è valido se hai un'applicazione con una finestra (una gui insomma), e vuoi fare qualcosa quando viene chiusa quella.. Windows ti mette a disposizione nell'api un modo per gestire anche l'evento di chiusura della console (SetConsoleCtrlHandler (http://msdn.microsoft.com/en-us/library/ms686016%28v=VS.85%29.aspx) ti permette di gestione gli della console, con l'inglese ti conviene farci il callo :asd: ).. però non credo convenga, proprio perché c'è la atexit che è portabile.. detto questo, mi sembra strano che ti rallenti, non dovrebbe far altro che chiamare la tua funzione
si, non so come spiegare bene, il programma si blocca per circa 2-3 secondi come se da un momento all'altro uscisse la finestrella di windows
il programma ha smesso di funzionare...
dopo che riprende normalmente bisogna cliccare una seconda volta sulla X per chiuderlo
comunque il risultato è soddisfacente grazie