有什么函数可以 替代延迟函数 Sleep()

来源:百度知道 编辑:UC知道 时间:2024/06/11 06:31:04
我想延迟时间长点,我用Sleep()时程序很卡
文本框都动不了了,有什么可以替换它的函数吗?
或者有其他解决方案。
谢谢。

方法一:就是你说的Sleep
使用sleep函数的不利处在于期间不能处理其他的消息,如果时间太长,就好象死机一样,所以我们利用

COleDateTime类和COleDateTimeSpan类结合WINDOWS的消息处理过程来实现延时:
COleDateTime start_time = COleDateTime::GetCurrentTime();
COleDateTimeSpan end_time = COleDateTime::GetCurrentTime()-start_time;
While(end_time.GetTotalSeconds() <= 2) //实现延时2秒
{
MSG msg;
GetMessage(&msg,NULL,0,0);
TranslateMessage(&msg);
DispatchMessage(&msg);
End_time = ColeDateTime::GetCurrentTime-start_time;
}//这样在延时的时候我们也能够处理其他的消息。
方法三:
可以采用GetTickCount()函数,该函数的返回值是DWORD型,表示以毫秒为单位的计算机启动后经历的时间间隔。
DWORD dwStart = GetTickCount();
DWORD dwEnd = dwStart;
do
{
MSG msg;
GetMessage(&msg,NULL,0,0);
TranslateMessage(&msg);
DispatchMessage(&msg);
dwEnd = GetTickCount();
} while((dwEnd - dwStart) <= 2000);
上面的方法在延时的精确度上,很多时候不能满足我们的要求,下面是一种更精确的微秒级延时:
LARGE_INT