zoukankan      html  css  js  c++  java
  • VC定时器的用法:SetTimer和Ontimer .

    Settimer是设置一个计时器并开始执行计时器Ontimer中的代码,Ontimer是计时器所执行的代码。KillTimer用于停止计时器。 Settimer是设置,Ontimer是响应Settimer消息的。

    SetTimer函数的用法

    1 )用WM_TIMER来设置定时器

    先请看SetTimer这个API函数的原型

    UINT_PTR SetTimer(         
        HWND hWnd,//和定时器相关联的窗口
        UINT_PTR nIDEvent,//一个非0的数字标志这个定时器
        UINT uElapse,//指定时间间隔,以毫秒为单位
        TIMERPROC lpTimerFunc//一般指定为null
    );
    当在MFC的工程中如下:
    UINT_PTR SetTimer(         
        UINT_PTR nIDEvent,//一个非0的数字标志这个定时器
        UINT uElapse,//指定时间间隔,以毫秒为单位
        TIMERPROC lpTimerFunc//一般指定为null
    );

    用法如下:

    SetTimer(1,1000,NULL);

    1:计时器的名称;

    1000:时间间隔,单位是毫秒;

    NULL:使用onTime函数。

     

    在每次时间到1s时会触发WM_TIMER消息,其消息响应函数如下:
    void CXXX::OnTimer(UINT_PTR nIDEvent)
    {
    // TODO: 在此添加消息处理程序代码和/或调用默认值
            // 此处加入如下代码就好了:
            switch()
            {
            case 1:
                  //做该做的事情
                    //当不需要的时候在此处调用KillTimer(1);
                  break;
            default:
                  break;
            }
    CDialog::OnTimer(nIDEvent);
    }

    当不需要计时器的时候调用KillTimer(nIDEvent);

    例如:KillTimer(1);

     

    如果我要加入两个或者两个以上的 timer怎么办?

    继续用SetTimer函数吧,上次的timer的ID是1,这次可以是2,3,4。。。。

    SetTimer(2,1000,NULL);

    SetTimer(3,500,NULL);

    嗯,WINDOWS会协调他们的。当然onTimer函数体也要发生变化,要在函数体内添加每一个timer的处理代码:

    onTimer(nIDEvent)

    {

    switch(nIDEvent)

    {

    case 1:........;

    break;

    case 2:.......;

    break;

    case 3:......;

    break;

    }

    }

  • 相关阅读:
    bzoj 2216 Lightning Conductor
    一些有趣的问题合集
    Codeforces 40E Number Table
    Codeforces 37D Lesson Timetable
    bzoj 4289 Tax
    bzoj 2844 albus就是要第一个出场
    bzoj 2115 Xor
    luogu 3790 文艺数学题
    bzoj 1420 Discrete Root
    Lucas定理学习笔记
  • 原文地址:https://www.cnblogs.com/lidabo/p/2568628.html
Copyright © 2011-2022 走看看