MDI-Anwendung korrekt beenden



  • Hi @all,

    es muss mir mal jemand verraten, wie ich meine MDI-Anwendung korrekt beenden kann.
    Ich will ein Doppelstart meiner Anwendung vermeiden:

    char *pszMutexName = "MyApp";
    
    HANDLE hMutex = CreateMutex(NULL, true, pszMutexName);
    DWORD dwError = GetLastError();
    if (dwError == ERROR_ALREADY_EXISTS)
    {
        AfxMessageBox("Die Anwendung läuft bereits !", MB_ICONERROR);
        ????
    }
    

    Habe das aus der FAQ und auch schon den Thread zum Thema Beenden gelesen, aber wenn ich probiere, meine Release doppelt zu starten, dann wird die Meldung angezeigt, aber danach kommt dann immer "... funktioniert nicht mehr" unter Vista !

    Eigentlich ein simples Problem... 🙂
    Schonmal danke für die Hilfe !


  • Mod

    Wenn Du das Ganze in InitInstance gleich am Funktionseingang machst musst Du nur FALSE zurückgeben und das wars.



  • Funktioniert, wusste nur nicht genau, ob ein einfaches return FALSE ausgereicht hätte.
    Und hatte noch ein Problem mit einem Pointer, der in ExitInstance per delete entsorgt werden sollte, da aber ungültig war (zeigt erst im Laufe von InitInstance auf was Vernünftiges).

    Ok, danke dir ! 👍


  • Mod

    Wen Du Zeiger in Deinem CWinApp Objekt hast, dann sollten die auch im Konstruktor auf NULL gesetzt werden.

    Uninitialisierte Variablen sind etwas sehr unfeines...



  • Ja, da hast du wohl Recht ! 👍
    Muss in der Hinsicht, vor allem aber auch mit Pointern, noch ziemlich aufpassen.

    Danke 😉


Log in to reply