SOLVED: How to keep Completion Bar active?

I have several mdl apps that perform fairly lengthy cpu intensive processes and display a completion bar to inform the user of their progress. With Windows 7 the completion bar only works for a few seconds and then does not respond to the updates I am sending and seems to hang, however the process completes normally in its own time.

Is there a way to force/trick MicroStation or Win7 into not going into the "not responding" mode so that the completion bar will complete?

SOLVED!

As Jon pointed out you have to use the Win32 api, however all that is required is to read a single message to let Win7 know that you are still alive. I Added a simple c++ function into my sister DLL that reads a single windows message and returns. Call it right before updating the completion bar in the pure MC code.

.MC code:

apiPumpMessage();
mdlDialog_updateCompletionBar(db, msg, percent);


.DLL code:

/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::  Module:  apiPumpMessage
::  Purpose: process a windows message to let win7 know we are responding
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
extern "C" DLLEXPORT int apiPumpMessage ( void )
{
    MSG msg;

while (::PeekMessage(&msg, NULL, NULL, NULL, PM_NOREMOVE))
    {
    ::TranslateMessage(&msg);
    ::DispatchMessage(&msg);
    return(TRUE);
    }
return(TRUE);

}