MFC——Timer的简单使用

Timer的使用主要需要用到三个函数:setTimer()、Ontimer()、KillTimer().分别是创建、响应、销毁时钟。

SetTimer有两个函数。一个是全局的函数::SetTimer()
UINT SetTimer(
HWND hWnd, // handle of window for timer messages
UINT nIDEvent, // timer identifier
UINT uElapse, // time-out value
TIMERPROC lpTimerFunc // address of timer procedure
);

其中hWnd 是指向CWnd的指针,即处理Timer事件的窗口类。说道窗口类(CWnd),我们有必要来看一下CWnd的继承情况:CWnd有以下子 类:CFrameWnd,CDialog,CView,CControlBar等类。这也意味这些类中都可以定义SetTimer事件。

同时,SetTimer()在CWnd中也有定义,即SetTimer()是CWnd的一个成员函数。CWnd的子类可以调用该函数,来设置触发器。

    UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) );

参数含义:
nIDEvent:是指设置定时器的iD
nElapse:是指时间延迟。单位是毫秒。这意味着,每隔nElapse毫秒系统调用一次处理函数。
最后一个参数是时间处理函数,为NULL时,处理Ontimer()函数。通常情况下设置为NULL。

BOOL KillTimer( int nIDEvent );

killTimer主要是去除SetTimer中设置的定时器。nIDEvent为SetTimer中的定时器编号。

使用方法:

1、先创建Timer;

SetTimer(1,10,NULL);

2、编写时钟响应处理函数;
SetTimer中设置为NULL,那么我们重载Ontimer函数:

    void XXXDlg::OnTimer(UINT_PTR nIDEvent)
{
    ////////////////////////////////////
        //重载代码
    /////////////////////////////////////
    CDialogEx::OnTimer(nIDEvent);
}

3、使用完Timer后记得Kill掉。
killTimer后的id为我们要Kill的Timer ID

KillTimer(1);

4、添加消息映射

BEGIN_MESSAGE_MAP(XXXDlg, CDialogEx)
    ON_WM_TIMER() //Timer消息映射
    //……其他
END_MESSAGE_MAP()

自此,最简单的Timer就已经可以使用了。

你可能感兴趣的:(timer,mfc)