MFC DLL: DLL erstellt ein Fenster. Fenster soll nach den Ende der Anwendung noch sichtbar sein
-
Hallo,
folgender Sachverhalt: Ich habe eine Anwendung die eine Funktion in einer MFC-DLL (mit eigenem MFC-Gerüst) aufruft. Diese Funktion erstellt ein Fenster, dass von der Anwendung mit Daten versorgt wird. Jetzt hätte ich gerne, dass das Fenster auch nach dem Ende der Anwendung noch "da bleibt".
Geht das Prizipell nicht mit DLL's, d.h. wird grundsätzlich nach dem Beenden des aufrufenden Programms alles aufgräumt, oder gibt es doch eine Möglichkeit...Vielen Dank für Eure Hilfe
-
Die DLL wird doch normalerweise bei Programmstart komplett als Ressource geladen und am Ende wieder gelöscht. Daher wird es wohl schwierig dies irgendwie zu umgehen, denn irgendwer muss den Speicher freigegeben. Ich hab ehrlich gesagt keine Ahnung wie das gehen soll. Doch ich frage mich, ob das nicht einfacher geht. Nämlich mit einem Ereignis (Stichwort: CEvent) auf welches deine Hauptanwendung wartet (Stichwort: WaitforSingleObject). Daher sie könnte alle Fenster verstecken (Stichwort: SW_HIDE) oder beim Beenden auf dieses Ereignis warten (Stichwort: ExitInstance).
Man könnte dieses Ereignis in der DLL erzeugen, es exportieren und in der Anwendung bevor dem Beenden dann auf jenes warten, bis in der DLL etwas das Ereignis setzt.Ist nur so eine Idee. Vielleicht gibt es was besseres oder schnelleres oder was auch immer.
Grüssli
-
Eine DLL wird auch nur in einen Prozess geladen. Diese wird also entladen wenn der Prozess beendet ist.
Ein Fenster lebt immer in einem Thread, ein Thread lebt immer in einem Prozess.
Folgerung: Ohne Prozess kein Fenster!
Starte Deine Anwendung mit einem speziellen Parameter einfach nochmal, der die Nachricht anzeigt und beende den primären Prozess.