Thread Nachricht an ein Fenster
-
Hi alle zusamen,
habe ein komisches Problem, verstehe nicht ganz wieso die Aplikation Abschmiert.
Also habe einen Thread welcher mit _beginthreadex(...) erzeugt wird und zwar im Konstruktor einer Klasse. Dieser Tread soll wen er fertig ist einfach einen Text in meiner Dialogfeld_Klasse ausgeben habe schon alles Probiert, z.B. mit einer Postmessage die in meiner Dlg_Klasse steht, oder ein Zeiger von der pDlg_Klasse->messageAusgeben(...).
Das einzige was funktioniert ist pDlg_Klasse->m_strNachricht; wobei m_strNachricht meine Variable des Ausgebe Feldes ist. Nur wie übergebe ich den Text welcher vom Thread erzeugt wurde an die Variable.
Diese Frage taucht bestimt oft auf aber ich finde gerade nichts was dazu past.
Vielen Dank!
-
Der Thread sieht so aus:
DWORD WINAPI ObjektThread_BA_1(LPVOID lpvParam) { CStopwatch stopwatch; CMeineSimuationlDlg* pPointer = ((CMeineSimuationlDlg*)lpvParam); HANDLE handle; //Pseudo handle des Threads kan nur in dieser Funktion verwendet werden handle=GetCurrentThread(); SetThreadPriority(handle, THREAD_PRIORITY_HIGHEST); LARGE_INTEGER li; hTimerThread[0]=CreateWaitableTimer(NULL, FALSE, NULL); //TRUE ist Manuel-Reset d.h. alle Threads werden Signalisiert const int nTimerUnitPerSecond=1000000; li.QuadPart=-(10*nTimerUnitPerSecond); SetWaitableTimer(hTimerThread[0], &li, 10000, NULL, NULL, TRUE); WaitForSingleObject(hTimerThread[0], INFINITE); //Differenz zwieschen Star und aktueller Zeit //Messung der bisher verbarauchten Zeit in Millisec. __int64 qwElapsedTime=stopwatch.Now(); pPointer->MessageBox("Thread_BA_1", NULL, MB_OK); //Message Box funktioniert ohne Probleme //doch sobad ich den Pointer so einsetze: //pPointer->CMeineSimuationlDlg::NachrichtAusgeben(); //Schmiert mir das Programm ab return(0); } ///////////////////////////////////////////////Die Funktion die ich aufrufe sit so aus:
void CMeineSimuationlDlg::NachrichtAusgeben() { m_strNachrichtAusgeben="Thread_BA_1"; UpdateData(FALSE); }//Mit UpdateData gibts ein Problem und ich weis nicht wie ich es beseitigen soll