软件开发中,经常会涉及到计时的操作,下面总结下实现计时器的几种方法。

方法一:

使用SetTimer()和OnTimer()实现计时操作。

SetTimer设置OnTimer的调用属性

 SetTimer(100,100,NULL);

OnTimer根据SetTimer的设置定时刷新数据

void CDemoView::OnTimer(UINT nIDEvent)
{// TODO: Add your message handler code here and/or call defaultCView::OnTimer(nIDEvent);
}

方法二:

精确的时间计时

QueryPerformanceFrequency查询定时器的执行频率

QueryPerformanceCounter查询定时器的计数值

//初始化值
DWORD dwMsecond = 0;
LARGE_INTEGER cpuHz, startCnt, targetCnt;
cpuHz.QuadPart     = 0;
startCnt.QuadPart  = 0;
targetCnt.QuadPart = 0;
QueryPerformanceFrequency(&cpuHz);
QueryPerformanceCounter(&startCnt);//开始计时
QueryPerformanceCounter(&targetCnt);
dwMsecond = (DWORD)((targetCnt.QuadPart - startCnt.QuadPart)/cpuHz.QuadPart*1000);
if (dwMsecond > dwTimeout)
{
}

方法三:

GetTickCount是计算机编程中的函数,指返回(retrieve)从操作系统启动所经过(elapsed)的毫秒数,它的返回值是DWORD。

MSG msg;
DWORD dwTimeStarted;
dwTimeStarted = ::GetTickCount();//等待1000ms
while(::GetTickCount() - dwTimeStarted < 1000)
{  if(PeekMessage(&msg,0,0,0,PM_REMOVE))  {  TranslateMessage(&msg);DispatchMessage(&msg);}
}//超过10s退出
if(::GetTickCount() - dwTimeStarted > 10*1000)
{  if(PeekMessage(&msg,0,0,0,PM_REMOVE))  {  TranslateMessage(&msg);DispatchMessage(&msg);}return ;
}

VS之实现计时器的几种方法相关推荐

  1. android 计时器 三种,Android计时器的三种实现方式(Chronometer、Timer、handler)

    本文实例为大家分享了Android计时器的三种方法,具体内容如下 目录: 1.借助Timer实现 2.调用handler.sendMessagedely(Message msg, long delay ...

  2. SetTimer的使用问题(三种方法)

    定时器的使用:三种方法 如果您需要在整个程序执行期间都使用定时器,那么您将得从WinMain函数中或者在处理WM_CREATE消息时呼叫SetTimer,并在退出WinMain或响应WM_DESTRO ...

  3. Android实现定时器的几种方法

    前言 这几天正在看Android官方的开发文档,里面有很多很值得思考的开发建议,有时间的朋友可以去看一下(官方是英文文档,如果看不懂可以通过浏览器插件翻译对比着看,还是很方便的). 其中一篇课程提到了 ...

  4. android 毫秒 计时器,Android时分秒计时器的两种实现方法

    可能我们在开发中会时常用到计时器这玩意儿,比如在录像的时候,我们可能需要在右上角显示一个计时器.这个东西其实实现起来非常简单. 只需要用一个控件Chronometer,是的,就这么简单,我都不好意思讲 ...

  5. Python timeit 中的计时器的两种使用方法

    一.直接使用timeit(),repeat() 1.timeit # 代码结构: # from timeit import timeit     模块引入 # time1 = timeit(" ...

  6. js中setTimeout的用法和JS计时器setTimeout与setInterval方法的区别和confirm方法

    setTimeout()在js类中的使用方法 setTimeout (表达式,延时时间) setTimeout(表达式,交互时间) 延时时间/交互时间是以豪秒为单位的(1000ms=1s) setTi ...

  7. 总结以下三种方法,实现c#每隔一段时间执行代码:

    总结以下三种方法,实现c#每隔一段时间执行代码: 方法一:调用线程执行方法,在方法中实现死循环,每个循环Sleep设定时间: 方法二:使用System.Timers.Timer类: 方法三:使用Sys ...

  8. 11 种方法教你用 Python 高效下载资源

    1.使用requests 你可以使用requests模块从一个URL下载文件. 考虑以下代码: 你只需使用requests模块的get方法获取URL,并将结果存储到一个名为"myfile&q ...

  9. HTTP之原理,长短连接,响应码,三握四挥,八种方法

    文章目录 1 HTTP原理 1.1 HTTP协议与TCP/IP协议的关系 1.2 无状态的HTTP协议 2 长短连接详解 2.1 简介 2.2 TCP短连接 2.3 TCP长连接 2.4 长连接短连接 ...

最新文章

  1. 弹幕,你知道是怎样练成的?
  2. Android JNI(一)——NDK与JNI基础
  3. jQuery过滤选择器:first和:first-child的区别,CSS伪类:first-child
  4. 【bzoj 3531】 [Sdoi2014]旅行(树链剖分+树套树)
  5. 笔记:常见的约束问题求解算法——乘子法和Frank-Wolfe算法
  6. 桌面计算机未响应,电脑软件总是未响应 电脑应用程序经常无响应,
  7. 东南大学破格保研挂科_东南大学破格保研挂科_兜兜转转终入四牌楼——东南大学保研心得...
  8. java m个苹果n个篮子_m个苹果放入n个盘子问题
  9. memset,calloc的区别
  10. bootstrap之栅格化
  11. FlowJO X 流式补偿调整
  12. php限制一个函数在几分钟内不被调用_PHP - 无法在双引号内调用函数
  13. 听见丨苹果申请自主导航系统专利,自动驾驶汽车梦再近一步 现代打造更聪明、实用汽车AI语音系统
  14. Linux3:基本语法
  15. com.xxx.common.service.xxxService‘ that could not be found.异常 @Autowire注入失败
  16. windows 7解决AERO不透明问题
  17. 马蜂窝毕博:分析完这9点工作原理,我们最终选择了 Apache SeaTunnel!
  18. Android_基于g-sensor的坐下动作的的识别
  19. 22/10/08 vue2项目,登录注册路由守卫
  20. App Store审核条款(2016.06.21更新)

热门文章

  1. 高德API+Python解决租房问题(.NET版)
  2. HTML5表格和表单
  3. 大数据分析:王宝强离婚事件到底有多火热!
  4. 生产者消费者模型——C语言代码详解
  5. 微信小程序之2048小游戏(二)
  6. 【微信小程序】知识付费小程序梦想贩卖机v2-1.0.88-带4插件
  7. 如何查看springboot、spring版本
  8. mysql 存储uuid_MySQL中存储UUID的最佳实践
  9. Pillow图像颜色处理的具体使用
  10. 【老生谈算法】matlab实现线性平滑滤波算法——线性平滑滤波算法