Wie beende ich ein Dialogfenster-Programm?
-
Ganz einfache Frage: Mit welchem Befehl beende ich ein Dialogfenster-Programm?
Ich suche seit ner halben Stunde im Netz und in der Hilfe und finde keine Lösung.
Das kann doch nicht sein
-
Hallo
Alt-F4.
Mehr wirst du hier nicht hören, denn C++ kennt keine Fenster oder ähnliches. Also must du noc hsagen unter welcher Plattform (Windows?) und welchem Framework (WinAPI? MFC? VCL?) du arbeitest.
Und in C++ gibt es auch keine Befehle, nur Funktion
bis bald
akari
-
Windows MFC
In ner Anleitung hab ich gelesen dass eine Funktion OnCLose() geerbt werden kann ..was irgendwie nicht geht.
-
Ich bin mir nicht ganz sicher, aber versuch mal
NameDesFensters.Close();
-
uahah...geht nicht. Also das gibts doch nicht - das kann doch nicht unmöglich sein. Ich will einfach ein Menü, bei dem durch klicken auf Datei-Beenden das Programm beendet wird
-
Hallo
du hast immer noch nicht gemerktdas du im flaschen Subforum gepostest hast. Hoffentlich verschiebt dich ein Mod bald.
bis bald
akari
-
std::exit (0);aus cstdlib.
Aber normalerweise sollte sich soetwas automatisch aus dem "Programmfluss" ergeben.
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum MFC (Visual C++) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Dann kommt:
error C2039: 'exit': Ist kein Element von 'std'
-
Füg einen Button ein, mach nen Doppelklickdrauf, übernehme den Funktionsnamen den er Dir anbietet, und schreibe folgendes:
void CSystemzeitDlg::OnButton2() { OnOK(); }
-
Dann kommt:
error C3861: "OnOK": Bezeichner wurde nicht gefunden.
-
Wenn auch
CDialog::OnOK();nicht geht, dann ist das kein Dialog.
-
Naja, dann kommen eben zwei Fehlermeldungen:
-Kein Zugriff auf protected Member, dessen Deklaration in der CDialog-Klasse erfolgte
-nzulässiger Aufruf einer nicht statischen Memberfunktion
Gibt es dafür eigentlich keinen Standardbefehl wie exit/killapp/close usw.?
-
lol ? Also
CDialog::OnOK();kann in der tat nicht gehen -.-
OnOK();das muss gehen... solange du auch wirklich in einer von CDialog abgeleiteten Klasse bist...
PostQuitMessage(0)geht auch... unschön

SendMessage(WM_CLOSE);geht auch...
-
Dialoge werden mit EndDialog beendet. Letzten Endes rufen OnOk, OnCancel, und der OnClose Handler diese Funktion auf.
BTW: PostQuitMessage ist wieder mal einfach nur fehl am Platz. Ich verstehe nicht warum dies immer wieder hier empfohlen wird. Man muss nur die Klasse nochmal verwenden und schon beendet es einem die Nachrichtenschleife. Zudem kann man in diesem Fall nicht mal mehr ene Fehlermeldungsdialog anzeigen.
Just my 2 cents.
-
Hey Martin... kannst net mehr lesen? Was meinst de was ich mit Unschön meine? ... Aber hast recht... EndDialog hab ich glatt vergessen...
-
(D)Evil schrieb:
lol ? Also
CDialog::OnOK();kann in der tat nicht gehen -.-
Hmm?

Das muss ich Morgen früh mal nachgucken...
-
Normal sollte es nicht gehen... ist ja nicht static... also bei mir meckert er auch in nem Dlg

-
(D)Evil schrieb:
Normal sollte es nicht gehen... ist ja nicht static... also bei mir meckert er auch in nem Dlg

So, ich habe mal geguckt - bei mir geht es wirklich:
void FehlerDlg::OnOK() { // Der Rest der Funktion CDialog::OnOK(); }Wie willst du denn sonst Funktionen der Basisklasse aufrufen?

Würde ich da oben nur OnOK() aufrufen, hätte ich nen Stack Overflow. :pSchau mal z.B. in ne OnInitDialog, da siehst du das auch. (Und in zig anderen Funktionen, immer wenn explizit die Basisklasse gefordert wird.)

-
(D)Evil schrieb:
Hey Martin... kannst net mehr lesen? Was meinst de was ich mit Unschön meine?
Sry habe ich übersehen!