Newsgroup: it.comp.lang.c++
Titolo: Chiusura Applicazione

Salve,
sto realizzando una applicazione MDI e il mio problema e' il seguente:
Nel momento in cui vado a cliccare sul pulsante x dell'app se ho dei
documenti non salvati vorrei abortire la chisura dell'app come fanno
Word ed Excel se sceglie il puslante annulla nella dialog di chusura del
documento.
C'e' qualcuno che ha qualche idea su quale messaggio si deve
intercettare e come poi abortire la chisura?
Ringrazio in anticipo chiunque sappia darmi indicazioni utili.
-- 
     (ZZZ)       Filippo Salotti, Bagni di Lucca, Lucca, Italy.
    //   \\  _                 E-mail : 
fil...@humnet.unipi.it
   /Y\    ZD<_o===============================================o
 .oZZZZZo.     | Studente Ingegneria Informatica Automatica  |
<OXXXXXXXO>    | Dip. Sistemi Elettrici Universita' di Pisa. |

 
Intercetta il messaggio WM_CLOSE (o il metodo OnClose della finestra 
principale se usi MFC).
Ciao,
Antonello
--
// ------------------------------------------------------------------
// Antonello Salvatucci
// Software Engineer
// LEGO Media International - Kloevermarken 120, 7190 Billund DENMARK
// 
// antonello at digi. lego. com             
http://www.lego.com

 intercettare e come poi abortire la chisura?
Non hai specificato con quale compilatore lavori. Io uso il Borland C++ e
creando un'applicazione con il C++ ed il framework OWL, quando si fa click
sul pulsante x di chiusura appare una message box con tre pulsanti (Si, No,
Annulla) che permettono di salvare il documento, non salvarlo ed evitare di
uscire dal programma. Questo e' automatico, e sicuramente viene fatto anche
da MFC. Se usi invece la API devi usare chiaramente la funzione MessageBox
con il quarto parametro (uType) impostato a MB_YESNOCANCEL e valutare il
valore di ritorno che puo' essere IDOK per il tasto ok, IDNO per il tasto
no, IDCANCEL per il tasto annulla.
-- 
Jo Parrello - OWL/C++ Programmer (
jopa...@tin.it
)
http://space.tin.it/computer/giparrel

 no, IDCANCEL per il tasto annulla.
No io uso MFC e purtroppo questo non e' automatico (o almeno a me non
riesce), era proprio questo infatti il meccanosmo che volevo
implementare.
Grazie comunque per l'interessamento.


implementare.
Mah, dovrebbe esserlo, se non fai cose strane... il
meccanismo é questo: in corso di chiusura il framework
chiama il metodo SaveAllModified del tuo oggetto
applicazione (unico e solo oggetto di una classe
derivata da CWinApp), nel quale puoi fare quel che
desideri e anche bloccare la chiusura richiesta, se
occorre, a seconda del valore di ritorno.
Comunque, se non fai particolari override, il metodo
SaveAllModified della CWinApp chiama i metodi
SaveModified di tutti gli oggetti-documento che
corrispondono a documenti aperti (lo stesso metodo
SaveModified viene chiamato su di un singolo oggetto
documento se solo una finestra figlio-MDI viene
chiusa mentre altre restano aperte).  Se devi fare
cose particolari per un certo tipo di documento, puoi
fare un'override di SaveModified.
Ma se non la fai, il metodo mostra all'utente una
message box, se il documento é stato modificato
dopo il suo ultimo save, chiedendogli se vuole
salvare, perdere i cambiamenti, o annullare la
chiusura!  Insomma, il default é proprio il piú
normale e abituale comportamento da te richiesto.
Com'é dunque che a te pare non funzionare?  Stai
usando la normale architettura documento/vista...?
Alex