ATL oder CThunk?



  • Hallo!

    Jeder eingefleischter WinAPI'ler der in C++ programmiert wird bestimmt schon mal versucht haben eine Klasse für Fenster zu schreiben. Ich habe anfangs die Methode verwendet, wo man den Extraspeicher des Fensters ausnutze um den this-pointer darin zu speichern. Das gefiel mir jedoch später garnicht mehr nachdem ich die wunderhübsche CThunk-Klasse studiert habe; eine sehr elegante Lösungsalternative wie ich fand. Bisher habe ich die Klasse CThunk nur bei solchen Fensterklassen verwendet, von denen ich jeweils immer nur eine Instanz brauchte. Heute bin ich drauf gekommen, dass der Code für mehrere Instanzen garnicht mehr funktionieren würde. Der Grund liegt darin, dass ich die Fensterklasse (ich meine jetzt WNDCLASS[EX]) nur einmal registrierte. Damit das aber für mehrere Instanzen der C++ Fensterklasse funktioniert, muss jedesmal eine neue WNDCLASS[EX] registriert werden. So verstehe ich das zumindest.
    Nun plagt mich zusätzlich das Problem der Destruktion eines Fensterobjektes. Wer kommt zuerst, der Destruktor der C++ Fensterklasse oder die WM_DESTROY/WM_NCDESTROY Nachricht? Wenn ich nämlich in der Behandlungsroutine von WM_DESTROY (z.B) auf die Membervariablen zugreife und das Objekt längst destruiert wurde kann es unter Umständen zu Zugriffsverletzungen kommen...

    Was soll ich jetzt tun? Soll ich doch lieber was anderes verwenden, z.B. die ATL? Oder was verwendet ihr denn? Auch CThunk? Wie habt ihr dann diese Probleme gelöst??

    Hoffe auf eure Hilfe.

    MfG,
    Aziz





  • Ich kenne diese Seite bereits, aber ich hab mir den Artikel nochmals durchgelesen. Jetzt weiß ich vielleicht auch schon wie ich meine Probleme lösen kann. Bin noch am werkeln 😉



  • um zu testen ob erst der dtor oder die wm_ kommt mach doch einfach ein msg boxen dann wirst du es schon sehen.

    muss zugeben habe weder mit atl noch mit cthunk was am hut. 😉



  • Das ist momentan nicht mehr das Problem, aber auch wenn ich feststellen würde dass z.B. der Destruktor zuerst kommt, dann könnte ich mich nicht wirklich darauf verlassen, dass dies immer geschieht...



  • Aziz schrieb:

    aber auch wenn ich feststellen würde dass z.B. der Destruktor zuerst kommt, dann könnte ich mich nicht wirklich darauf verlassen, dass dies immer geschieht...

    warum ?



  • Keine Ahnung, sei nicht so neugierig :p


Anmelden zum Antworten