Programm aus einem Modalen Dialog beenden?
-
Hallo Zusammen
Ich habe ein kleines Programm (ist noch klein, wird aber ganz gross), welches einen neuen Dialog öffnet. In diesem Dialog wird eine Threadfunktion gestartet die eine Datei downloadet und anschliessend wird der Thread beendet und eine MSG-Box erscheint, erfolgreich beendet.
Jetzt möchte ich aber aus diesem Dialog aus das ganze Programm beenden können. Wie?? Es ist die YourDlg.h und die HauptDlg.h. YourDlg wird eben aus der HauptDlg aufgerufen.
Den YourDlg beende ich dann mit
pYourDlg->SendMessage(WM_CLOSE,0,0);
und der HauptDlg versuchte ich mit CHauptDlg::PostMessage(WM_QUIT); zu beenden, aber dann kommt immer PostMEssageA ist keine MEmberfunktion von ... ! Okay, habe es dann weiter mit
CHauptDlg dlgHaupt; dlgHaupt.EndDialog(TRUE);
versucht. Bekomme keine Fehlermeldung, Programm startet aber nach dem Klick auf OK, wenn das Programm beendet werden sollte bricht es ab und es kommt: Schwerwiegender Fehler.
Wie mache ich es nun, dass ich das Programm komplett beenden kann??
Gruss
Wolf
-
dlgHaupt.OnOK();
-
Doug_HH schrieb:
dlgHaupt.OnOK();
Bringt nichts.. Schon versuct.. auch mit OnCancel... keine Wirkung, dann erhalte ich folgende Fehlermeldung:
1>k:\vc++ projecte - 2010 !\swt - swiss weather tool\swt - swiss weather tool\yourdlg.cpp(188) : error C2248: "CDialog::OnOK": Kein Zugriff auf protected Member, dessen Deklaration in der CDialog-Klasse erfolgte.
1> d:\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(3116): Siehe Deklaration von 'CDialog::OnOK'
1> d:\microsoft visual studio 9.0\vc\atlmfc\include\afxwin.h(3068): Siehe Deklaration von 'CDialog'lg
Wolf
-
AfxGetMainWnd()->PostMessage(WM_CLOSE);
sollte funktionieren.
-
@Wutz, Danke aber habe ich auch schon versucht. Keine Reaktion.
EDIT: Ok, war dumm.. jetzt gehts.. Habe einfach im HauptDlg den YourDlg aufgerufen und danach den HauptDlg beendet. So funktionierts.
Aber von YourDlg heraus den HauptDLg zu beenden klappt auch mit der AFX-Funktion nicht. Wird irgendwie einfach ignoiert.
-
wenn der Vaterdialog modal ist, sollte
((CDialog*)GetParent())->EndDialog(IDOK)
funktionieren.