Zugriff auf modalen Dialog von anderem Thread aus...
-
Hi,
ich haben einen Modalen Dialog und dieser hat ein Label. Jetzt wollte ich von einem anderen Thread aus die Beschriftung des Labels ändern...und da bekomme ich assertions um die ohren geworfen...
..als erstes habe ich probiert, einfach vom anderen Thread aus eine Methode der Dialog-klasse zu rufen, innerhalb der dann der Labeltext verändert wird.
---das hat schon mal nicht funktioniert...dann habe ich versucht, vom Thread aus eine Windowsmessage WM_PAINT an den Dialog zu schicken...mit dem selben Effekt...er bekommt irgendwie assertions..
Weiß jemand, wie man die Dialogelemente eines Modalen Dialogs ändern kann oder sollte ess diesbezüglich gar keine probleme geben???
BESTEN Dank.!!!
-
Du kannst einen Dialog nur in seinem eigenen Thread ändern - von außen könntest du ihm höchsten eine Nachricht schicken, daß er etwas ändern soll (sobald der Dialog Zeit hat, dürfte er diese NAchricht verarbeiten).
-
Versuchmal so:
Einem Thread wird pParam übergeben.
pParam kannst du auf deine Dialogadresse casten.
Dann mit Pfeiloperator kannst du auf alle public Variablen und Funktionen zugreifen[code] UNINT myThread ( LPVOID pParam ){ ((CMyDialog*)pParam)-> m_bButton.SetWindowText("Ändere sich"); //CMyDialog ist die Dialogklasse des Dialogfensters // m_bButton ist eine public Variable von Typ CButton. } [/code]
Sollte funzen, hab schon öfter so gemacht.
Grüße
-
habe etwas vergessen
Thread startest du mit übergabe von "this" Zeiger, etwa so:CWinThread *pMyThread = AfxBeginThread(MyThread, this, THREAD_PRIORITY_NORMAL);