A
CStoll schrieb:
Da steht doch die Erklärung - du hast ein CWnd-Objekt (deinen Dialog) über Thread-Grenzen hinweg übergeben.
Das Problem hatte ich oben schonmal erwähnt - Fenster-Handles sind nur innerhalb ihres eigenen Threads gültig, darum fliegt dir die Überprüfung um die Ohren, wenn du aus einem anderen Thread heraus die Gültigkeit des Handles überprüfen willst.
Gegenfrage: Was willst du mit dem ASSERT_VALID() überhaupt erreichen?
In einem anderen Projekt ist es schon mal vorgekommen, dass der Zeiger NULL war. Dann ist ja auch der Zugriff Essig. Das wollte ich prüfen. Ich gebe Dir Recht, dass das zugegeben hier nicht ganz sinnvoll ist, da der Thread aus dem Dialog heraus aufgerufen wird und der Zeiger theoretisch immer gültig sein dürfte.
Ich hab jetzt alle UI-Funktionen da raus genommen, dadurch wird die Struktur auch klarer. Der Thread fragt die Messkarte ab, rechnet und schreibt innerhalb einer critical section was in die Member des Dialogs. Dann kommt die PostMessage zum Neuzeichnen und Aufräumen des Threadobjektes.
Danke Euch beiden nochmals für die Hilfe.