vc实现时间延时

vc实现时间延时

 

邵盛松 20101113日星期六

 

下载地址 http://download.csdn.net/source/2829628

 

Sleep函数延时,如何时间太长,程序就像无响应一样,采用消息泵可以解决这个问题

 

5秒延时

     COleDateTime odtStart = COleDateTime::GetCurrentTime();

     COleDateTimeSpan odtsEnd = COleDateTime::GetCurrentTime()-odtStart;

     while(5>=odtsEnd.GetTotalSeconds())

     {

         MSG msg;

         GetMessage(&msg,NULL,0,0);

         TranslateMessage(&msg);

         DispatchMessage(&msg);

         odtsEnd = COleDateTime::GetCurrentTime()-odtStart;

     }

     AfxMessageBox(L"5秒之后");

 

50毫秒延时

 

这其中也有一些误差

DWORD dwStart = GetTickCount();

     DWORD dwEnd = 0;

     do

     {

         MSG msg;

         GetMessage(&msg,NULL,0,0);

         TranslateMessage(&msg);

         DispatchMessage(&msg);

         dwEnd = GetTickCount();

     } while((dwEnd - dwStart) <= 50);

 

     AfxMessageBox(L"50豪秒之后");

 

5微秒延时

对于更精确的延时就要用QueryPerformanceCounter函数

 

LARGE_INTEGER liTemp ;

     LONGLONG nStart=0,nEnd=0 ;

     double nTemp=0;

     QueryPerformanceCounter(&liTemp) ;

     nStart = liTemp.QuadPart ;

     while (nTemp<5)

     {

         QueryPerformanceCounter(&liTemp) ;

         nEnd = liTemp.QuadPart ;

         nTemp=static_cast<double>(nEnd - nStart);

     }

     AfxMessageBox(L"5微秒之后");

 

以上程序在VC++2005 UNICODE下调试通过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西笑生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值