WinAPI - force en refresh a dialogboxen.

Tags:    c++

Nogen der kan hjælpe med følgende:

Jeg har et WinAPI program som laver en dialogbox. I dialogboxen har jeg en run-knap og en Edit-control textbox.. Når man trykker på run knappen afvikles en kode der gør at computeren laver en beregning (selve koden er underordnet). Men computeren er ved at lave denne beregning vil jeg gerne have en status-text i min Edit-control box, så jeg kan se hvor lang den er noget i beregningen. F.eks. skal den skrive "creating dummy" i text-boxen. Til at få tekst i boxen bruger jeg:

SetDlgItemText(hwnd, IDC_STATUS, "creating dummy");

Men jeg kan ikke få den til at opdatere min dialogbox mens den er igang med at udregningen. Mens udregning står kommer Task manageren med en "not responding" og bliver først normal igen når udregningen er færdig. Kan man på nogen måde tvinge en opdatering af dialogboxen?

Jeg har kigget på winprog.org men synes ikke jeg kan se noget der beskriver problematikken.



3 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Nu er jeg ikke en haj til WinAPI, men skulle jeg lave det i et hvilket som helst miljø, ville jeg lave en tråd der håndterede det, da man nemlig løber ind i det du beskriver at den "står stille" fordi den bruger ressourcer på at beregne. Dvs. enten lave beregningen i en separat tråd, eller lave opdateringen i en separat tråd (jeg ville nok vælge den første)

(¯`·._.·[Brian Hvarregaard]·._.·´¯)
Praesto et Persto



I nogle tilfælde kan man løse problemet ved at kalde UpdateWindow:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/pantdraw_4zef.asp

I andre tilfælde kan man løse problemet ved at lave en lokal message loop med PeekMessage

Men den bedste løsninge er en seperart tråd til beregningen.



Ja. Den bedste løsning er uden tvivl at dele det op i tråde. Men i det her tilfælde kan jeg se at en updateWindow virker fint, så det holder jeg mig til.

Tak for svarene.



t