for( ;; ){
DWORD dwStatus = WaitForSingleObject( clThread.m_pclThread->m_hThread, dwTimeOut );//等待单个对象
if( dwStatus == WAIT_OBJECT_0 ){
break;
}
else if( dwStatus == WAIT_TIMEOUT ){
DWORD dwTick = ::GetTickCount();//计次?
MSG stMsg;
while( ::PeekMessage( &stMsg, NULL, 0, 0, PM_REMOVE ) ){//消息从队列里除掉
::TranslateMessage( &stMsg );
::DispatchMessage( &stMsg );
if( dwTimeOut <= (::GetTickCount() - dwTick) ) break;//如果所用时间小于等待时间,返回
}
}
上面的注释是我瞎写的,大概翻一下就行,我理解是不是防止窗口死机做的循环?
::GetTickCount(); 用处是高精度计时
WaitForSingleObject 是用来做现成同步
while( ::PeekMessage( &stMsg, NULL, 0, 0, PM_REMOVE ) )
{
...
}
这个是消息循环。你的代码中应该有个wndproc的方法处理消息。