|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jan 2003
Città: Udine
Messaggi: 66
|
ON_WM_CLOSE message non gestito
Ciao @ tutti,
sto sviluppando un prog MDI con Visual C++ 6 Nella vista di uno dei documenti,ho aggiunto tramite classwizard il codice necessario per gestire il messaggio "ON_WM_CLOSE" Il codice del metodo è così: CMyFormView: { //Fai qualcosa... // e qualcos'altro // Chiama il metodo del genitore CFormView: } Il problema è che quando chiudo la finestra questo codice non viene eseguito,in quanto inserendo un break. non entro mai in questo metodo Usando Spy++ ho visto che quando chiudo la finestra un messaggio ON_WM_CLOSE viene effettivamente inviato,anche se non so con certezza da quale thread viene gestito Please help me! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Firenze
Messaggi: 630
|
Intercettalo nella PreTranslateMessage.
__________________
---> Lombardp CSS Certified Expert (Master Level) at Experts-Exchange Proud user of LITHIUM forum : CPU technology Webmaster of SEVEN-SEGMENTS : Elettronica per modellismo |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2000
Messaggi: 551
|
La gestione delle chiusure nelle applicazioni mdi è diversa rispetto
ad una sdi.Per default windows minimizza le child forms ma non le chiude. Quello che devi fare è liberare la memoria della form e ricrearla a runtime(è quello che io faccio con il Cbuilder) Devi scartabellare sulla guida del tuo compilatore nella sezione dedicata alle applicazioni mdi. Probabilmente quando tenti di chiudere,lancia il messaggio di minimizzazione della form. ciao Ultima modifica di verloc : 23-01-2004 alle 10:28. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2000
Messaggi: 551
|
No,mi ricordavo malissimo:
è la vcl che per default minimizza(perchè window non permette di nascondere le child). Dovresti secondo me intercettare il messaggio WM_MDIDESTROY ... WM_MDIDESTROY wParam = (WPARAM) (HWND) hwndChild; // handle of child to close lParam = 0; // not used; must be zero An application sends the WM_MDIDESTROY message to a multiple document interface (MDI) client window to close an MDI child window. ... so quello che vuoi fare: non c'è un evento onqueryclose()? (tu vuoi chiudere solo a certe tue condizioni,non è vero? Ultima modifica di verloc : 23-01-2004 alle 10:44. |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Jan 2003
Città: Udine
Messaggi: 66
|
Grazie Verloc,
cmq il problema è molto più sempolice L'utente chiude il documento quando vuole,ma alla chiusura del file controllo se esso ha aggiunto degli elementi a delle combo box Questi elementi non vengono serializzati nel file stesso ma in un file a parte,in modo che siano accessibili da tutti i documenti del tipo in questione Vorrei realizzare una cosa tipo la richiesta di salvataggio del documento che il framework chiede se il flag di documento modificato è true(Quello che setti con CDocument:: SetModifiedFlag)ma distinta da questa Posso fare l'override di CDocument:: OnClose,ma mi secca non capire perchè non funziona come dovrebbe l'OnClose della vista Spero di essere stato spiegato! Grazie! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:38.



















