DWORD WINAPI CGeneralMsgBox::ThreadFunction(LPVOID lpParameter) { if (lpParameter) { CGeneralMsgBox *pObject = static_cast<CGeneralMsgBox *>(lpParameter); DWORD dwInitTime = GetTickCount(); DWORD dwStartTime = dwInitTime; while (pObject->m_nResult != 0) { DWORD dwCurrentTime = GetTickCount(); DWORD dwDeltaTime = dwCurrentTime - dwStartTime; if (dwDeltaTime >= 1000) { if ((dwCurrentTime - dwInitTime) >= pObject->m_dwTimeOut) { pObject->m_bTimedOut = true; pObject->PostMessage(WM_COMMAND, IDTIMEOUT, 0); return WAIT_OBJECT_0; } dwStartTime = GetTickCount(); } Sleep(50); } } return WAIT_OBJECT_0; }