Vor dem Schließen erst Nachfrage stellen (MB_YESNOCANCEL)

Nord-Süd-Richtung

Erfahrenes Mitglied
Huhu Com!

Ich versuche mich gerade an einer "leichten" Windows Application, doch leider klappt es nciht so, wie vorgestellt.
Ich möchte egrne, sobald der User das Fenster schließt, das dann eine MessageBox auftaucht, udn fragt: Wirklich schließen? (Ja, Nein, Abbrechen).
Das Problem ist:
Das Fenster wird gschlossen, und danach taucht erst die MessageBox auf, und dann sit es auch egal, was ich klicke.
Was muss ich an meinem Code verändern?
C++:
case WM_DESTROY:
                        a = MessageBox(0,TEXT("Fenster wirklich schlie0en?"),TEXT("Das erste richtige Programm"),MB_YESNOCANCEL | MB_ICONEXCLAMATION);
                        switch (a)
                               {
                               case 2: //Abbrechen
                                    MessageBox(0,TEXT("Vorgang abgebrochen!"),TEXT("Das erste richtige Programm"), MB_OK);
                                    return 0;
                                    break;
                               case 6: // Ja                               
                                    PostQuitMessage(0);
                                    break;
                               case 7://Nein
                                    MessageBox(0,TEXT("Fenster nicht geschlossen!"),TEXT("Das erste richtige Programm"), MB_OK);
                                    return 0;
                                    break;
                               }
 
Hi.

WM_DESTROY wird auch erst gesendet nachdem das Fenster bereits entfernt wurde.

Du mußt die WM_CLOSE Message verarbeiten und ggf. die DestroyWindow Funktion aufrufen. Siehe MSDN.

Gruß
 
hey Nord-Süd-Richtung, kannst du mir den code bitte posten, ich arbeite an dem selben problem, werde aber aus deinem code nicht schlau
danke :)
mfg DerCoder
 
Hallo,

Das Thema ist wohl schon ein bisschen älter und ich glaube nicht das da noch nen Post kommt.

Naja ich will ma nich so sein ne... das ganze muss in ne WindowProc und statt WM_DESTROY in der ersten Zeile musst du schreiben "WM_CLOSE"

Gruß
Anfänger
 
Zurück