Frage zu nichtmodale Dialoge
-
Hallo Leute,
ich habe eine CListCtrl in der ich mit der rechten Mausklick ein Menü angezeigt bekomme und daraus ich ein nichtmodales Dialog aufrufe.
void CMainFrame::OnStatus() { UpdateData(FALSE); m_pderDialog = new CderDialog; m_pderDialog->Create(IDD_DER_DIALOG, this); m_pderDialog->ShowWindow(SW_SHOW); m_pderDialog->setText(m_strText); }Beim beenden des Dialoges verwende ich in der Class des Dialoges folgendes...
void CderDialog::OnSchliessen() { DestroyWindow(); }Jetzt meine Frage,
wenn ich doch das Dialog mit new erstelle, muß ich doch mit delete dies wieder frei geben.Reicht da DestroyWindow() ?
Oder wie macht man das am Besten ??Gruß und Danke
andy_mann
-
Da du dir den Zeiger auf den Dialog in CMainFrame::m_pderDialog speicherst, kannst du es natürlich so machen:
delete m_pderDialog; m_pderDialog = NULL;Das darfst du natürlich erst nach CderDialog::OnDestroy aufrufen.
Ein besserer Weg bei nicht-modalen Dialogen ist:
void CderDialog::PostNcDestroy() { delete this; }Danach darfst du natürlich nicht mehr auf CMainFrame::m_pderDialog zugreifen, aber eventuell brauchst du den Zeiger mit dieser Methode sowieso nicht mehr.
-
Vielen Dank,
Gruß
andy_mann