C++日常应用-定时器

时间:2022-02-03 23:12:50

定时器的使用:分为有句柄 无句柄两类

有句柄情况下的使用:
头文件:
1、添加映射
BEGIN_MSG_MAP(类名)
MESSAGE_HANDLER(WM_TIMER, OnTimer)
END_MSG_MAP()
2、函数声明
LRESULT OnTimer(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
3、使用:
在需要开启定时器的地方SetTimer(1, 10); 参数1 定时器ID;参数2 延时时间(毫秒)

LRESULT CJUKI_ElementForm_Center::OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
  // TODO: 在此添加消息处理程序代码和/或调用默认值
  int nTimerID = (int)wParam;
  switch(nTimerID)
  {
    case 1:
    KillTimer(1); //结束定时器
    break;
  }
}

无句柄情况下使用:
头文件声明:
  static void TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime) ; //用定时器
定义:
  void CInfraredDetec::TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime)
  {
    switch(nTimerid)
    {
      case m_uTimerID: //开启定时器时候的 ID;有多个定时器的时候需要用case
          if (条件成立)
          {
            //结束定时器
            ::KillTimer(NULL,nTimerid);
          }
          break;
      default:
          break;
    }
  }
使用:
int m_uTimerID = ::SetTimer(NULL,100,10,(TIMERPROC)TimerProc); //10ms触发一次
MSG msg;
while (1)
{
  GetMessage(&msg, NULL, 0, 0);
  DispatchMessage(&msg);
}

C++日常应用-定时器的更多相关文章

  1. 推荐一款好用的任务定时器:Quartz

    前言 官网:https://www.quartz-scheduler.net/ 一款开源的任务定时器. 日常有很多地方需要定时刷新的,比如微信开发中的微信API token,或者定时清理一下缓存数据等 ...

  2. [转]iOS 中几种定时器 - 控制了时间,就控制了一切

    这篇文章是转载内容,原文地址:http://www.cocoachina.com/ios/20150519/11857.html?utm_source=tuicool 这里的知识点,其实在我们日常开发 ...

  3. PPT定时器小记

    在日常会议汇报中,往往会出现超时的情况.此时需要一种优雅提醒讲演者加快速度的方式.PPT定时器就是其中的一种方法. ppttimer,一款在GitHub上发布的开源软件,基本能满足我在本项工作中的需求 ...

  4. muduo网络库学习笔记(三)TimerQueue定时器队列

    目录 muduo网络库学习笔记(三)TimerQueue定时器队列 Linux中的时间函数 timerfd简单使用介绍 timerfd示例 muduo中对timerfd的封装 TimerQueue的结 ...

  5. 定时器setTimeout()和setInterval()使用心得整理

    JavaScript提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInterval()这两个函数来完成. 一.setTimeout() setTimeout函 ...

  6. 放弃setInterval-说说定时器

    上述事件循环机制的核心是:JS引擎线程和事件触发线程 但事件上,里面还有一些隐藏细节,譬如调用setTimeout后,是如何等待特定时间后才添加到事件队列中的? 是JS引擎检测的么?当然不是了.它是由 ...

  7. Go组件学习——cron定时器

    1 前言 转到Go已经将近三个月,写业务代码又找到了属于Go的条件反射了. 后置声明和多参数返回这些Go风格代码写起来也不会那么蹩脚,甚至还有点小适应~ 反而,前几天在写Java的时候,发现Java怎 ...

  8. 在vue组件中设置定时器和清除定时器

    由于项目中难免会碰到需要实时刷新,无论是获取短信码,还是在支付完成后轮询获取当前最新支付状态,这时就需要用到定时器.但是,定时器如果不及时合理地清除,会造成业务逻辑混乱甚至应用卡死的情况,这个时就需要 ...

  9. ShedLock日常使用

    首发于个人博客:ShedLock日常使用 场景模拟 定时器Scheduler在平时使用比较频繁,比如定时数据整理,定时向客户发送问候信息等...,定时任务的配置比较简单,比如在springboot中, ...

随机推荐

  1. ADO.NET学习

    ADO.NET重要的类 在.NET访问MySql数据库时的几点经验! string connstr=Setting.Instance().GetConnectionString("MySql ...

  2. 关于a标签点击会出现的背景色的问题

    同事今天在tap里面有a标签,并且给a标签块化之后,点击tap切换时会出现背景色,解决方案: body { margin: 0 auto; max-width:100%; background: #f ...

  3. 浅谈php设计模式(1)---工厂模式

    一.接口继承直接调用 先看看这样一段代码: <?php interface db{ function conn(); } class dbmysql implements db { public ...

  4. ip数据结构

    本文摘自 linux kernel ip.h,感谢开源的GNU struct ip { #if __BYTE_ORDER == __LITTLE_ENDIAN unsigned int ip_hl:4 ...

  5. 安装package&period;js

  6. 如何让centos6&period;5在vm11里上网,连接网络?

    如何让centos在vm里连接网络?步骤有3,方可解决: 1.配置vm的虚拟网络编辑器 2.配置虚拟机centos 3.设置centos的ip地址 一.配置vm的虚拟网络编辑器

  7. Repeater事件OnItemCommand取得行内控件

    记录一下,主要是这句:TextBox txtNum = e.Item.FindControl("txtNum") as TextBox; Repeater真是太强了,太灵活.除了R ...

  8. linux下C&plus;&plus;动态链接C&plus;&plus;库示例详解

    注意其中使用函数返回基类指针的用法,因为Linux的动态链接库不能像MFC中那样直接导出类 一.介绍 如何使用dlopen API动态地加载C++函数和类,是Unix C++程序员经常碰到的问题. 事 ...

  9. jms的初步认识

    (内容取自:http://itindex.net/detail/49721-jms-jms-%E5%BA%94%E7%94%A8) 什么是JMS? JMS即java消息服务, JMS通过消息的形式来降 ...

  10. 团队作业8——第七天(beta阶段)

    一.Daily Scrum Meeting照片 二.燃尽图 三.项目进展 学号 成员 贡献比 201421123001 廖婷婷 16% 201421123002 翁珊 17% 201421123004 ...