Rückgabewert einer MFC-Applikation

jokey2

Erfahrenes Mitglied
Wie bringe ich eine MFC-(Dialog-)Applikation dazu, einen bestimmten Rückgabewert zurückzugeben? Wenn das Programm korrekt beendet wird, dann ist der Rückgabewert 0, manchmal gibt das MFC Framework aber auch einen Wert ungleich 0 aus, wenn ein Fehler aufgetreten ist. Diesen Rückgabewert möchte ich jetzt aber selber festlegen. Leider habe ich bisher keine Möglichkeit gefunden, das zu tun. Bitte, kann mir da einer helfen?
 
Eine Frage würde mich interessieren: Wozu brauchst du denn einen selbst definierten Rückganbewert? Eigentlich ist doch nur wichtig, ob die Applikation ordentlich beendet wurde oder ob ein Fehler auftrat.

Mfg

langer
 
Der Doku nach ist der Wert, den du bei CDeinerApp::ExitInstance zurückgibst, der Wert, der dann am Ende als ExitCode zurückgegeben wird.
 
@langer1801: Ich wollte selber festlegen, wann in meiner Applikation ein Fehler auftritt und welche Fehlernummer er bekommt.

@Endurion: Ja, das habe ich auch gelesen und auch ausprobiert. Dummerweise wird das ExitInstance in einer Dialogbasierten Applikation scheinbar nicht aufgerufen. Bei mit war das jedenfalls so.

Zur Erklärung: Ich wollte eine Applikation schreiben, die auf der Konsole und als Dialog laufen soll. Wenn keine Parameter angegeben werden, soll der Dialog geöffnet werden, in dem die Parameter eingetragen werden können. Allerdings habe ich schon bald gemerkt, daß die dialogbasierte MFC-Applikation da der falsche Weg war. Jetzt habe ich eine Konsolenanwendung mit MFC-Unterstützung genommen. Da kann ich das genau so machen und meinen Fehlercode zurückgeben. Das Programm soll sowohl von Hand ohne Parameter gestartet werden können als auch aus einer Batchdatei oder einem Makefile mit Parametern.
 
Das gilt bei Dialog-basierten Anwendung an sich genauso; du musst nur die ExitInstance per Hand überschreiben. Als Beispiel habe ich das ausprobiert:

int CMeineApp::ExitInstance()
{
// TODO: Fügen Sie hier Ihren spezialisierten Code ein, und/oder rufen Sie die Basisklasse auf.
CWinApp::ExitInstance();

return 17;
}


Im Debug-Output war dann auch returncode 0x11 zu sehen (also 17).
 
Das hatte ich ja ausprobiert, nur wurde ExitInstance aus irgendeinem Grund nicht aufgerufen.
Da muß ich aber irgendetwas Falsch gemacht haben. Gerade habe ich's nochmal ausprobiert, da ging's. Hat sich ja aber erledigt, da ich jetzt eine andere Art von Anwendung als Basis genommen habe.
 
Zurück