没啥说的,一个简单的可以定时结束的类: //定时结束的弹出对话框类 class MsgBox : public CThunkBase { public: MsgBox(char* strPrompt, char* strTitle, DWORD dwMilliseconds = 2000) { strcpy(m_strPrompt, strPrompt); strcpy(m_strTitle, strTitle); m_dwMilliseconds = dwMilliseconds; //启动一个单独的线程 m_uType = MB_OK; m_hEvent = CreateEvent(NULL, FALSE, FALSE, NULL); m_hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)GetFuncAddr(&MsgBox::MessageProc), &m_uType, 0, &m_dwThreadId); } ~MsgBox() { Sleep(m_dwMilliseconds); //两秒钟自动结束 PostThreadMessage(m_dwThreadId, WM_QUIT, 0, 0); WaitForSingleObject(m_hEvent, INFINITE); CloseHandle(m_hThread); } int CALLBACK MessageProc(LPVOID lpParameter) { MSG msg; UINT uType = (UINT)*(UINT*)lpParameter; MessageBox(NULL, m_strPrompt, m_strTitle, uType); while(GetMessage(&msg, NULL, 0, 0)); SetEvent(m_hEvent); return 0; } private: char m_strPrompt[100],m_strTitle[100]; HANDLE m_hThread; UINT m_uType; DWORD m_dwThreadId,m_dwMilliseconds; HANDLE m_hEvent; }; 测试代码如下: //测试代码: int main() { MsgBox("aa","bb"); return 0; }