Und die meisten
VCL-Objekte (die mit einem HWND) sind auch noch thread-affine.
Ihre Messages werden nur über die Thread-MessageQueue behandelt, in dessen Thread sie erstellt wurden.
A:
VCL ist nicht thread-save ... es werden öfters globale Default-Sachen gemeinsam verwendndet, wie z.B. in TFont, TPen und TBrush.
B: ein
VCL-Objekt muß auch im
VCL-Thread (MainThread) erstellt werden. (da du bestimmt vergessen hast die Message-Queue deines Threads abzuarbeiten)
C: Sowas mach man einfach nicht.
Es gibt einige Komponenten, die kann man teilweise in einem Thread behandeln. (nicht erstellen/freigeben ... nur auf gewisse Teile drauf zugreifen)
z.B. ein Bitmap/Image/Canvas, so lange das Canvas gesperrt wurde,
oder eine ListBox mit BeginUpdate (natürlich im Hauptthread ausgeführt)
-> TThread.Syncronize und TThread.Queue
SendMessage und PostMessage syncronisieren sich selbst, in den Thread, wo die Empfänger-Komponente erstellt wurde.