ERLEDIGT
JA
JA
ANTWORTEN
5
5
ZUGRIFFE
413
413
EMPFEHLEN
-
Hallo..
Ich versuche gerade vergeblich, zu begreifen, was da vor sich geht..
In der InitInstance-Methode meiner von CWinApp abgeleiteten Hauptklasse gebe ich zunächst erfolgreich eine Messagebox aus:
MessageBox(0,"Boxtext","Start-Infos",MB_OK);
Danach übergebe ich die Steuerung an das erste Window: (wird alles ja standardmäßig so vom Class-Wizard erzeugt)
int nResponse = dlg.DoModal();
Nun möchte ich zur Beendigung des Programmes nochmals eine MessageBox ausgeben.
Geht aber nicht mehr. Es passiert einfach nichts, eine weitere MessageBox-Anweisung wird nicht angezeigt.
Der Returncode ist übrigens '1'. Allerdings liefert die funktionierende MessageBox ebenfalls '1'.
Hilft also nicht weiter.
Versteht das jemand ?
Danke
-
Hallo,
wenn das Hauptfenster der Applikation zerstört wird, wird auch gleichzeitig der Thread der Applikation beendet. Alle danach noch erzeugten Fenster werden dadurch sofort wieder zerstört. Du kannst das Problem umgehen, wenn du die Zeile:entfernst bzw. auskommentierst.Code cpp:1
m_pMainWnd = &dlg;
Gruß
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
Besten Dank für den schnellen Tipp - klappt

Nachvollziehen kann ich das Ganze zwar nicht, aber man muß ja nicht alles verstehen..
..schließlich hat das Objekt 'dlg' eine längere Lebensdauer.
Code :1 2 3 4 5
CAskShiDlg dlg(&db); m_pMainWnd = &dlg; MessageBox(0,"Boxtext1","Start-Infos",MB_OK); int nResponse = dlg.DoModal(); MessageBox(0,"Boxtext2","Ende-Infos",MB_OK);
Zum Zeitpunkt der zweiten Messagebox existiert 'dlg' nach meinem Einblick in den Debugger immer noch.
Es ist ja auch die gleiche Klammerebene. Das Verschwinden kann, da 'dlg' ja nicht mit 'new' angelegt wurde,
m.E. doch erst nach Verlassen der Klammerebene (bzw. hier InitInstance) geschehen.
Wenn das Funktionieren der MessageBox also von 'dlg' abhängen sollte (was ich auch nicht erwartet hätte),
dann müßte es nach meinem Verständnis auch nach DoModal() noch möglich sein, da 'dlg' noch existiert.
Aber ich bin halt Anfänger.. wollte das aber trotzdem noch loswerden
-
"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
Ist aber doch nicht so ganz logisch, da das Dialogfenster vor dem Aufruf von DoModal auch noch nicht existiert.
-
Unbedingt logisch ist die MFC nicht in jedem Fall

In der MSDN steht zumindest: Wenn der Applikationsklasse ein Hauptfenster zugewiesen wurde (m_pMainWnd = ...) und dieses zerstört wird, werden alle danach angelegten Fenster sofort wieder platt gemacht. Warum das so sein muss und was genau dahintersteckt, weiß ich nicht.
Gruß
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
Ähnliche Themen
-
[SUSE 10.2] lvm findetLaufwerk aber es ist nicht nutzbar
Von mc_gulasch im Forum Linux & UnixAntworten: 5Letzter Beitrag: 02.12.07, 15:11 -
XP startet nicht mehr nach SP2 Update
Von andycage im Forum Microsoft WindowsAntworten: 0Letzter Beitrag: 18.05.05, 09:58 -
Bildergalerie nach Webspacewechsel nicht mehr!
Von urbantrooper im Forum PHPAntworten: 2Letzter Beitrag: 19.04.05, 09:10 -
JTextField nicht nutzbar, wohl ein Panel Problem? (Ich vs. GUI)
Von wissensdurstig im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 4Letzter Beitrag: 16.04.05, 21:26 -
Funktionen in Klassen sind in abgeleiteter Klasse nicht nutzbar.
Von danielmueller im Forum PHPAntworten: 4Letzter Beitrag: 22.10.04, 11:27





Zitieren

Login






