定时器setTimer的使用(vs2015下mfc)

    技术2022-07-12  83

    设置定时器:

    #define AUTORECORD_TIMER 1

    1)SetTimer(AUTORECORD_TIMER, 1000*60*2,NULL);

    AUTORECORD_TIMER为定时器ID,1000*60*2为设置的定时时间间隔(毫秒为单位。此处间隔为2分钟);

    最后一个参数为空时,默认采用的是系统 的OnTimer函数,如下示例添加:

    A.cpp:

    BEGIN_MESSAGE_MAP(A, CDialog)     ON_WM_TIMER() END_MESSAGE_MAP()

    void A::OnTimer(UINT_PTR nIDEvent) {     

         if(nIDEvent == AUTORECORD_TIMER )//若只有一个定时器则无需判断

        {

             要实现的操作;

        }

    }

    A.h:

    class A:public CDialog { public:

        afx_msg void OnTimer(UINT_PTR nIDEvent);

    }

    注:上面部分除了手动添加,也可以通过vs的Class wizard下的Message添加机制实现。

    2)SetTimer(NULL,AUTORECORD_TIMER, 1000*60*nInterval,(TIMERPROC)TimerProc);

    最后一个参数为自定义的回调函数TimerProc,示例(由于我并没有应用按到句柄,因此设为NULL)

    A.cpp:

    void A::TimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime) {    

        if(idEvent== AUTORECORD_TIMER )//若只有一个定时器则无需判断

        {

             要实现的操作;

        }

    }

    A.h:

    class A { public:

        static void CALLBACK TimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime);

    }

    注:回调函数TimerProc是静态的,因此要求其中的函数和类内变量也是静态的。

    Processed: 0.010, SQL: 9