【Win32汇编】定时器

 

 想要程序每隔一段时间实现某一功能,可以使用SetTimer函数向Windows申请一个定时器。
----------------------------------------分割线--------------------------------------------------
invoke    SetTimer,hWnd,nIDEvent,nElapse,lpTimerFunc
hWnd——窗口句柄
nIDEvent——定时器ID,如果有多个定时器,通过这个ID判断是哪个定时器(wParam存储ID值)
nElapse——时间间隔,单位ms,无论设置的值是多少,真实的间隔都将是55ms的整数倍
lpTimerFunc——回调函数
----------------------------------------分割线--------------------------------------------------
invoke    KIllTimer,hWnd,uIdEvent
----------------------------------------分割线--------------------------------------------------
定时器的实现方法有两种
1、向窗口过程发送WM_TIMER消息
这种方法在设置定时器时lpTimerFunc必须设置为NULL。在窗口过程中,通过判断wParam的值来辨别是哪个定时器发送的WM_TIMER。使用KillTimer销毁定时器时,uIdEvent使用SetTimer中的nIDEvent。

2、使用回调函数

在申请定时器时一般将hWnd,nIDEvent设置成NULL,lpTimerFunc设置函数地址,这时定时器没有函数ID,但定时器设置成功后SetTimer会返回一个ID,可以存储这个ID,在要销毁这个定时器时uIdEvent使用这个ID。当然,也可以自己指定这个定时器ID,但是hWnd不能设置成NULL,否则,指定的ID无效。

 

注意:1、定时器是一个低级别的消息,Windows只有在消息队列中没有其他消息时才会发送WM_TIMER消息,如果消息队列中有消息累积,那么WM_TIMER就会被丢弃,并且不会被补发;

           2、消息队列中不会有多条WM_TIMER消息,如果消息队列中已经有1条WM_TIMER消息没有被处理,那么,到了定时的时刻,两条WM_TIMER会被合并成一条。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值