DLL Dialog -> Anwendung wird geschlossen



  • Hallo,

    Ich habe ein Dialogfeld welches sich in einer MFC-Erweiterungs-DLL befindet.
    Wenn ich dieses Dialogfeld nun aus einer Anwendung heraus aufrufe wird die Anwendung nach dem Schließen des Dialogfeldes beendet.

    void CTournamentDlg::OnBnClickedAboutButton()
    {
    	CInfoDlg dlgInfo;
    	dlgInfo.DoModal();
    }
    

    Wenn ich hinter die DoModal()-Zeile eine MessageBox mache, dann wird mir diese MessageBox noch angezeigt und die Anwendung erst nach dem Klick auf OK in der MessageBox beendet.

    Kennt jemand das Problem und kann mir bitte helfen.

    Danke 🙂



  • Keine ideen ? 😞



  • Mh... Willst du, dass die MessageBox nach der Beendung deines "InfoDialogs" erscheint, oder willst du, dass sie vor dem Erscheinen deines Dialogs erscheint?



  • Ich will die MessageBox gar nicht haben.

    Das Problem ist ein anderes:
    Ich rufe mit dem Code da oben ein Dialogfeld auf. So weit so gut.
    Wenn ich nun das geöffnete Dialogfeld wieder schließe, dann wird auch gleich noch die aufrufende Anwendung beendet, was aber eigentlich nicht sein soll.

    Wenn ich aber hinter den DoModal(); aufruf (zum Testen) eine MB mache, dann seh ich diese noch und erst nachdem ich die MB geschlossen hab wird das Programm beendet.

    Ich will aber, dass der im Programm bleibt.



  • Ich würde darauf tippen das sich Dein Programm auch beendet wenn Du den DoModal(); aufruf auskommentierst ohne das die DLL angesprochen wird.

    Versuchs mal bitte und poste das Ergebnis.



  • Also wenn ich nur die DoModal() Zeile auskommentiere und die darüber so lasse, dann gibts nen bösen Fehler: "Die Anweisung in '0xirgendwas' verweist auf Speicher in '0xirgendwas'. Der Vorgang 'written' konnte nicht auf dem Speicher durchgeführt werden."

    Wenn ich beide Zeilen auskommentiere, passiert, wie zu erwarten, gar nichts wenn ich auf den Button drücke.



  • Und wenn ich nur die DoModal()-Zeile auskommentiere und dahinter eine MessageBox("") mache, dann bekomm ich die MessageBox auf den Schirm und nach dem Schließen der MB beendet sich das Prog, wie vorher. (ohne Fehlermeldung)

    void CTournamentDlg::OnBnClickedAboutButton()
    {
    	CInfoDlg dlgInfo;
    	MessageBox("");
    	//dlgInfo.DoModal();
    }
    

    Also jetzt bin ich so richtig ratlos. 😞



  • noch eine Kleinigkeit:
    Der DoModal() - Aufruf gibt mir IDCANCEL zurück, was auch stimmt so.
    Kann mit diesen Infos jemand was anfangen ?

    Danke 🙂



  • Zeig mal einen Teil deines DLL-Codes. Vermutlich hast du da was vergessen.
    Bzw. zum Download des ganzen Codes. Dann kann ich es testen obs bei mir auch so ist



  • Und das passiert nur wenn der Dialog in einer DLL ist? Und wenn du ihn in die EXE tust passierts nicht?



  • Und wenn ich nur die DoModal()-Zeile auskommentiere und dahinter eine MessageBox("") mache, dann bekomm ich die MessageBox auf den Schirm und nach dem Schließen der MB beendet sich das Prog, wie vorher. (ohne Fehlermeldung)

    Da würd ich mal fast drauf tippen das es nicht an der DLL liegt.

    Kommentier mal alle Zeilen aus und schaue ob es sich dann auch beendet.
    Wenn ja schau ob Du die ID des Buttons vllt. noch wo anderst auswertest.

    Das Crashen ohne DoModal könnte am Destruktor liegen. Aufräumarbeiten die erst nach einem DoModal nötig wären ?



  • Also vielen Dank mal, werd den Code dann gegen Ende der Woche mal uploaden, hab den leider grade nicht zur Verfügung. Das wär echt super, wenn da jemand schauen könnte.
    Ich melde mich wieder.
    So far: Danke 🙂


Anmelden zum Antworten