Benutzer mit den meisten Antworten
Windows herunterfahren - wann?

Frage
-
hier besteht das problem, daß mit beendigung meiner anwendung ggf. das gesamte windows-system heruntergefahren werden soll.
dazu gab es bisher folgenden ansatz:
void CMainFrame::OnClose() { //Aufräumarbeiten, Speichern usw. CMDIFrameWnd::OnClose(); if ( m_bShutdownWindows ) { // Rechner runterfahren per ::ExitWindowsEx
}
}
Das Problem hier ist nun folgendes: Durch den Aufruf von CMDIFrameWnd::OnClose wird auch des destructor von CMainFrame aufgerufen, wodurch ein Zugriff auf m_bShutdownWindows danach nicht mehr funktioniert.
Geht es denn andersrum? Zuerst ::ExitWindowsEx aufrufen und dann den destrucor per CMDIFrameWnd::OnClose()? Wieviel zeit "hat man denn noch", nachdem ::ExitWindowsEx aufgerufen wurde? Die Aufräumarbeiten können ja auch einen moment dauern.
oder ist der ansatz so grundsätzlich falsch? wie gehts dann besser?
gruß und dank
micha
Antworten
-
bool bShutdownWindows =m_bShutdownWindows;
CMDIFrameWnd::OnClose();
if( bShutdownWindows ) ::ExitWindowsEx();
würde so nicht funktionieren?
MfG,
KS
Konrad Schiemert
- Als Antwort markiert suriel6666 Dienstag, 28. Mai 2013 11:13
-
>> bool bShutdownWindows =m_bShutdownWindows;
>>würde so nicht funktionieren?
kann sein, daß das so funktioniert, aber man darf nicht vergessen: nach CMDIFrameWnd::OnClose(); wure bereits der dtor der eigenen klasse aufgerufen, also ist es vermutlich (die experten mögen mich korrigieren) keine so gute idee, dahinter überhaupt noch IRGENDETWAS innerhalb der klasse zu tun
- Als Antwort markiert suriel6666 Dienstag, 28. Mai 2013 11:12
Alle Antworten
-
bool bShutdownWindows =m_bShutdownWindows;
CMDIFrameWnd::OnClose();
if( bShutdownWindows ) ::ExitWindowsEx();
würde so nicht funktionieren?
MfG,
KS
Konrad Schiemert
- Als Antwort markiert suriel6666 Dienstag, 28. Mai 2013 11:13
-
>> bool bShutdownWindows =m_bShutdownWindows;
>>würde so nicht funktionieren?
kann sein, daß das so funktioniert, aber man darf nicht vergessen: nach CMDIFrameWnd::OnClose(); wure bereits der dtor der eigenen klasse aufgerufen, also ist es vermutlich (die experten mögen mich korrigieren) keine so gute idee, dahinter überhaupt noch IRGENDETWAS innerhalb der klasse zu tun
- Als Antwort markiert suriel6666 Dienstag, 28. Mai 2013 11:12
-
... und warum ist das ein Problem?
Solange Du nichts mit dem this Zeiger machst, kannst Du Code ausführen solange Du willst.
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
:-) die sind alle durch die Objekt-Orientiertheit verdorben...
OO = prozedurales Programmieren mit implizitem this-Parameter ... wobei, das darf man glaub ich nicht zu laut sagen, einige hören das gar nicht gerne und Java-Jünger glauben gleich an den Weltuntergang :D