计时器和回调函数

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值