在进行Windows编程时,经常需要使用Sleep()这个Windows标准API函数来实现延时等待。但该线程的最大问题在于,调用了Sleep后,整个线程全部被挂起。也不能处理Windows消息。
TfxSleep解决该问题。实现卡住等待超时的同时,可以处理Windows消息。
// 延时 ?时间, 期间能处理Windows事件
VOID TfxSleep(ULONG ulMilliSeconds)
{
DWORD lFirst = GetTickCount();
MSG msg;
do
{
if(PeekMessage(&msg,NULL, 0, 0, PM_REMOVE))
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
Sleep(1);
} while (GetTickCount() - lFirst < ulMilliSeconds);
}