| 从陌生人的处理方式说起,这是延时中时间跨度最大的,单位至少在秒以上:http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=195559见过不只一个人问起过。其实估计陌生人是直接手写的这段代码,不是从程序段中copy出来的,有一些手误,大家自己调整一下就行了#include COleDateTime start_time = COleDateTime::GetCurrentTime(); COleDateTimeSpan end_time = COleDateTime::GetCurrentTime() - start_time; while(end_time.GetTotalSeconds() <= 2) { MSG msg; GetMessage(&msg,NULL,0,0); TranslateMessage(&msg); DispatchMessage(&msg); end_time = COleDateTime::GetCurrentTime() - start_time; }注意到我把原文中的 PreTranslateMessage(&msg);替换为了: TranslateMessage(&msg); DispatchMessage(&msg); 原因是,可以不仅仅在MFC中使用,而且 PreTranslateMessage有局限性,而且可能会造成线程消息阻塞。 还有一点说明,因为COleDateTimeSpan类的成员函数还有:GetTotalMinutes、GetTotalHours、GetTotalDays,能够实现更大时间段的延时。 往更小% |
| |