I've never done it before, but I'm pretty sure that you place a WM_TIMER message in your qeue for the checking of the status of what you're doing and the updating of the bar and you create a timer using SetTimer() and when on the WM_DESTROY message you place a KillTimer() function call and define a TIMMER macro at the top of your code (usually defined as something simple like 1) and uhh...I think thats it. I could be wrong though...