下面请跟着图老师小编一起来了解下VC函数中的延时操作,精心挑选的内容希望大家喜欢,不要忘记点个赞哦!
【 tulaoshi.com - 编程语言 】
VC函数中的延时操作
我在这里把论坛里能见到的几种延时方式总结一下。
COleDateTime start_time = COleDateTime::GetCurrentTime();
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)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; }
还有一点说明,因为COleDateTimeSpan类的成员函数还有:GetTotalMinutes、GetTotalHours、GetTotalDays,能够实现更大时间段的延时。
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)往更小的时间跨度上说,执行毫秒级的延时用GetTickCount就行: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_INTEGER litmp ;LONGLONG QPart1,QPart2 ;double d=0;QueryPerformanceCounter(&litmp) ; // 获得初始值QPart1 = litmp.QuadPart ;while (d40)//你想要的时间{ QueryPerformanceCounter(&litmp) ; QPart2 = litmp.QuadPart ; d=(double)(QPart2 - QPart1);}。
最后,如果还不能满足,那就去做时钟周期的延时吧:
#define NOP_COUNT 3//需要自己根据NOP及LOOP的指令周期计算.__asm { MOV ECX, NOP_COUNTDELAY: NOP LOOP DELAY }不过,用VC做这个工作是不是有点……
来源:http://www.tulaoshi.com/n/20160219/1622982.html