samedi 2 juillet 2016

How to use SetTimer replace Sleep()?


I have a application that needs do something step by step, serially, like this:

...
func1();
Sleep(2000);
func2();
Sleep(3000);
func3();
...

As we know, calling Sleep() will cause the user interface to "freeze", so for example there is no response when trying to move the application window.

So, I tried using SetTimer() instead, as it seems that it would not cause the UI to freeze, but my question is how can I implement the same "waiting" function as Sleep() when using SetTimer()?

...
func1();
SetTimer(hwnd, ID_Timer2s,2000, Timerfunc2s);// how to make sure 2seconds waiting happen between func1 and func2?
func2();
SetTimer(hwnd, ID_Timer3s,3000, Timerfunc3s);
func3();
...

// my intention is kill the timer once timeout, then go back next func2(), how?
VOID CALLBACK Timerfunc2s( 
    HWND hwnd,        
    UINT message,
    UINT idTimer,
    DWORD dwTime)
{ 
    KillTimer(hwnd, ID_Timer2s);
} 

VOID CALLBACK Timerfunc3s( 
    HWND hwnd,        
    UINT message,
    UINT idTimer,
    DWORD dwTime)
{ 
    KillTimer(hwnd, ID_Timer3s);
} 

Thanks for any suggestions.


Aucun commentaire:

Enregistrer un commentaire