PDA

Visualizza la versione completa : [C++] CFileDialog in MFC permane anche dopo chiusura


Bomberjava
08-04-2009, 15:40
Ciao ragazzi,
ho un problema che mi sta facendo impazzire.
Sto realizzando un'applicazione in MFC dialog based. Nella dialog principale ho un pulsate che quando viene premuto mi manda in esecuzione il metodo OnSelectFile() che mi genera una CFileDialog. Il codice del metodo Ŕ il seguente:

//visualizza una CFileDialog per la scelta del file da riprodurre
void Ctesina_RdS_guiDlg::OnSelectFile() {

CFileDialog SelectFile(TRUE,NULL,NULL,OFN_FILEMUSTEXIST,
"AVI files (*.avi)|*.avi||",this);
SelectFile.m_ofn.lpstrTitle = "Scegli una sorgente video";

CString Path(*__argv);
int i = Path.ReverseFind('\\')+1;
if(i)
Path=Path.Left(i);

SelectFile.m_ofn.lpstrInitialDir = Path;

//se viene premuto il pulsante Apri
if (SelectFile.DoModal() == IDOK) {
videofile = SelectFile.GetPathName();
//si chiama la funzione ElaborateVideo passando il filename
ElaborateVideo(videofile.GetBuffer());
}
}

La selezione del file funziona benissimo ma quando chiudo la finestra di Selezione File sia con la solita 'x' in alto a destra che con il pulsante 'annulla', questa sparisce ma in realtÓ rimane in esecuzione perchŔ se provo a chiudere la dialog principale il processo della mia applicazione continua a rimanere in esecuzione (nonstante graficamente tutte le due dialog siano chiuse)

Da cosa pu˛ essere dovuto?

Ciao e grazie!!

Federico

alka
08-04-2009, 18:49
Il linguaggio va indicato anche nel titolo, come da Regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=973887).

Qui l'ho aggiunto io.

Emulator «
08-04-2009, 20:46
Il problema accade solo quando apri la CFileDialog? L'errore comunque potrebbe essere altrove e non lý...

Bomberjava
09-04-2009, 01:18
Si... Sembra proprio che non venga rilasciata.. Stavo pensando di aggiungere alla dialog principale il metodo OnClose() e inserire all'interno il comando di distruzione della CFileDialog, ovvero DestroyWindow()... potrebbe essere una soluzione?

Il problema cmq sembra essere proprio li.. se non uso la CFileDialog il programma si chiude tranquillamente...

Loading