mfc计时器直接使用SetTimer(),原型如下:
UINT_PTR SetTimer(
UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器UINT nElapse, // 时间间隔,单位为毫秒
TIMERPROC lpTimerFunc // 回调函数
);
前两个参数分别是计时器的ID和事件间隔(以毫秒为单位),第三个参数可有两种情况
1、若该参数设为null,则直接将WM_TIMER消息将会被加入到消息队列。此时处理该计时器事件就需要为WM_TIMER添加消息处理函数
2、若该参数为回调函数,则需要自己定义回调函数,回调函数的形式如下
void CALLBACK EXPORT TimerProc(HWNDhWnd,UINT nMSG,UINT nIDEvent,DWORD dwTime);
此处用到了回调函数,所谓回调函数其实就是函数指针的一种应用。一下是我对回调函数的一种理解:
假设有模块使用者A,和模块B。A要使用B,但B中有一部分方法(函数)是不确定的,需要A在使用B时提供这一部分方法。此时B就可以将这一个不确定的方法设计为一个回调函数,该回调函数其实是一个函数指针,而这个回调函数的具体实现由A来完成。这一过程相当于是A调用B,B在调用A,所以称之为回调函数
最后再说一下函数指针
int g(int);这是一个含有一个int参数,返回值为int的函数
int (*gp)(int);这里的gp就是上面的那个函数的一个函数指针
typedef int (*Fun)(int );这里的Fun就是定义的一个函数指针类型,于是函数指针就可以如下定义
Fun funp=g