zoukankan      html  css  js  c++  java
  • 定时器

    OnTimer()函数用于实现定时控制功能,定时控制功能主要下面三个函数共同实现:

    SetTimer, KillTimer()和OnTimer().

    Settimer是设置定时器的,Ontimer是响应Settimer消息的。当Settimer设置的时间到了,就会自动调动Ontimer()函数。

    UINT_PTR SetTimer(
    HWNDhWnd, // 窗口句柄
    UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器
    UINTuElapse, // 时间间隔,单位为毫秒
    TIMERPROC lpTimerFunc // 回调函数
    );
    SetTimer(m_hWnd,1,1000,NULL); //一个1秒触发一次的定时器
    在MFC程序中SetTimer被封装在CWnd类中,调用就不用指定窗口句柄了
    于是SetTimer函数的原型变为:
    UINT SetTimer(UINT nIDEvent,UINT nElapse,void(CALLBACKEXPORT *lpfnTimer)(HWND,UINT ,YINT ,DWORD))
    当使用SetTimer函数的时候,就会生成一个计时器。
    SetTimer函数中
    nIDEvent指的是计时器的标识,也就是名字。
    nElapse指的是时间间隔,也就是每隔多长时间触发一次事件。
    第三个参数是一个回调函数,在这个函数里,放入你想要做的事情的代码,你可以将它设定为NULL,也就是使用系统默认的回调函数,系统默认的是OnTime函数。
     
    SetTimer(1,1000,NULL);
    1:计时器的名称;
    1000:时间间隔,单位是毫秒;
    NULL:使用onTime函数。
     
    当不需要计时器的时候调用KillTimer(nIDEvent);
    例如:KillTimer(1); //此处的ID号“1 ”应与SetTimer()中的ID号一致
     
    对于多个定时器,WINDOWS会协调他们的。当然OnTimer函数体也要发生变化,要在函数体内添加每一个timer的处理代码:
    OnTimer(nIDEvent)
    {
    switch(nIDEvent)
    {
    case 1:........;
    break;
    case 2:.......;
    break;
    case 3:......;
    break;
    }
    }
     
    例:在mfc写个定时计数器
    添加控件变量,分别为m_Edit,并初始化:
     

    m_Edit=0;

    依次添加消息处理函数

    1 添加WM_TIMER的消息处理函数OnTimer

     1 void CtestDlg::OnTimer(UINT_PTR nIDEvent)
     2 {
     3     // TODO: 在此添加消息处理程序代码和/或调用默认值
     4 
     5     switch(nIDEvent)
     6     {
     7     case 1:
     8         
     9         m_Edit1=m_Edit1+1;
    10         UpdateData(FALSE);
    11 
    12         break;
    13     
    14     default:
    15         break;
    16     }
    17 
    18     CDialog::OnTimer(nIDEvent);
    19 }

    2 启动定时器代码

    1 void CtestDlg::OnBnClickedButton1()
    2 {
    3     // TODO: 在此添加控件通知处理程序代码
    4     SetTimer(2,1000,NULL);
    5 }

    3 停止计时器代码

    1 void CtestDlg::OnBnClickedButton2()
    2 {
    3     // TODO: 在此添加控件通知处理程序代码
    4     KillTimer(1);
    5 }

     

    运行即可

  • 相关阅读:
    sublime text 安装json插件
    通过坐标系求覆盖物面积
    关于大数据入门的相关闲聊
    渡月橋 ~君 想ふ~
    数据库快照
    oracle 11g安装与使用
    IaaS、PaaS、SaaS介绍(非原创)
    Android项目模块化/组件化开发(非原创)
    开发人员必备的网络知识(非原创)
    公司常见管理系统介绍(非原创)
  • 原文地址:https://www.cnblogs.com/qiwu1314/p/8657575.html
Copyright © 2011-2022 走看看