Fensternachrichten abarbeiten mit GetMessage()
-
guten tag,
folgendes problem,
ich habe ein programm, dass an mehreren stellen länger rechnet und da es ja schlecht aussieht, wenn das fenster lange nicht aktualisiert wird muss ich an diesen stellen die Fensternachrichten "zwischendurch" abarbeiten...meine idee ist nun das nicht an den jeweiligen stellen zu machen, sondern einen extra thread dafür...
DWORD WINAPI ActWindowThread(LPVOID lpvoid) { MSG Msg; while( gbAktWindows == true) //beim beenden auf false { while (GetMessage(&Msg, NULL, 0, 0)) { if (!TranslateAccelerator( hwndMain, ghAccel, &Msg )) { TranslateMessage( &Msg ) ; DispatchMessage( &Msg ) ; } } Sleep(10); } return 0; }so mein erster ansatz, in einem ersten test funktioniert es auch...
allerdings bin ich mir nicht sicher ob ich das überhaupt so machen darf,
das GetMessage wird ja normalerweise im WinMain aufgerufen...können die WinMain und der thread gegenseitig ausbremsen/stören ?
Mfg
Schandi
-
Ich habe einen Gegenvorschlag - lass die Verarbeitung der Fensternachrichten im Hauptthread und lagere die Stellen, wo du "länger rechnest" in einen zweiten Thread aus (der am Ende mit PostMessage() mitteilt, daß er ein Ergebnis hat).
-
ja, ich weiß, dass problem dabei ist nur, dass das programm schon "etwas" umfangreich ist und an vielen stellen keine extra threads erstellt werden,
mit dieser idee, hatte ich gehofft mir die arbeit zu sparen, damit ich nicht an etlichen stellen das programm ändern muß...
-
ok, war ne sch*** idee...
funktioniert nämlich nicht...in dem thread die GetMessage wird zwar aufgerufen, aber das wars dann auch,
der kommt aus der funktion nicht wieder zurück...ich werds dann doch mal mit den threads umschreiben probieren ^^
Schandi
-
Wenn bitte PeekMessage verwenden!
Und bitte ganz wichtig: Dein Hauptfenster diablen, andernfalls wird Dein Programm reentrant.