Multithreading bei



  • Hallo,

    historisch gewachsen bietet sich für ein Projekt nur die Lösung eines Multithreading-MDI-Frameworks an. Das bedeutet, dass MDIClient und MDIChildren leider in unterschiedlichen Threads laufen müssen. Das ergibt wiederum das Problem, dass ich offenbar keine MDI-Nachrichten mehr via SendMessage schicken kann (z.B. WM_MDIDESTROY/ WM_MDIACTIVATE). Deshalb verwende ich nun die WinAPI-Funktionen DestroyWindow/ SetFocus....

    Das führt aber dazu, dass ich viele Sachen, die über die WM_MDI...-Nachrichten abgehandelt worden sind, selbst durchführen muss; z.B. Update des Window-Menüs/ Update der Title-Bar. Außerdem bin ich mir nicht sicher, ob die WinApi-Methoden die WM_MDI...-Nachrichten auch tatsächlich korrekt ersetzen (entstehen Memory-Leaks in internen Listen?...).

    Deshalb meine Frage: Kann ich irgendwie meine WM_MDI...-Nachrichten threadübergreifend so verschicken, dass sie vom MDIClient korrekt ausgeführt werden? Bin schon über SendNotifyMessage gestolpert - das liefert mir zwar einen Erfolgsstatus zurück, nur ausgeführt wird der Befehl aber nicht (z.B. WM_MDIDESTROY). Wäre dankbar, wenn mir ein Wissender weiterhelfen würde.



  • wo is das problem? Warum funktioniert ein SendMessage aus den Threads nicht? Sollte klappen


  • Mod

    Ich würde solch einen Konstrukt meiden wie die Pest!

    Du musst nur dafür sorgen, dass in Deinen Threads auch die Messageloop laufen.
    Ansonsten kannst Du eigene Messages erfinden, die Du per PostMessage absendest und die, dann in dem Thread in die eigentliche Aktion umgesetzt werden.


Anmelden zum Antworten