Problem mit Threads
-
Hi,
warum funktioniert eine Fenster-Prozedur nicht richtig, wenn sie von einem Thread aus aufgerufen wird?
Ich habe folgenden Code://... //pbLoading ist ein Boolean (natürlich ist der Speicher allokalisiert) ulLoadThreadID = _beginthread(LoadThread, 0, (void*)pbLoading); //... void LoadThread(void *pvLoading) { if(!pvLoading) { return; } MSG Msg; while(*((bool*)pvLoading)) { if(PeekMessage(&Msg, 0, 0, 0, PM_REMOVE)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } } }
Wenn ich den Code für das 'while ...' im Hauptprogramm habe funktioniert alles super, in dem Thread allerdings wird z.B. WM_PAINT nie aufgerufen.
Woran kann das liegen?Danke
M.T.
-
Weil man dazu einen UI-Thread braucht!
-
UI-Thread ??? und wie kann ich das umgehen? Ich muss dort aber dieses Abfragen nach Nachrichten nur untergeordnet-parallel machen (Ladebildschirm)
M.T.
-
Du kannst im Arbeitsthread keine Nachrichten des Hauptthreads abfragen! Es ist nur möglich, per PostThreadMessage diese Nachrichten weiterzuschicken!
-
Und ich wette fast, dass ich in diesem Neben-Thread auch keine Fenster richtig erzeugen kann - oder?
M.T.
-
doch, wenn dieser Thread eine eigene Nachrichtenschleife hat, geht das
-
Nein, ich erstelle die Fenster im Lade-Thread und möchte sie im Haupt-Thread nutzen
M.T.
-
Ich hab's jetzt wieder in einen Thread gepackt ...
Danke für die Hilfe
M.T.