WM_TIMER--SetTimer的函数

本文详细介绍了Windows定时器API中的SetTimer和KillTimer函数的使用方法,包括函数原型、参数解释及三种使用计时器的方法。通过阅读本文,您将学会如何在Windows应用中实现定时任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SetTimer的函数原型为:

UINT_PTR SetTimer( HWND hWnd, UINT_PTR nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc);

其中hWnd是和timer关联的窗口句柄,此窗口必须为调用SetTimer的线程所有;如果hWnd为NULL,没有窗口和timer相关联,并且nIDEvent参数被忽略。

nIDEvent是timer的标志,非零值;如果hWnd非NULL而且与timer相关联的窗口已经存在一个为此标志的timer,则此次SetTimet调用将用新的timer代替原来的timer。timer标志和窗口相关,两个不同的窗口可以拥有nIDEvent相同的timer。

uElapse是以毫秒为单位的时间数,范围为1ms到4,294,967,295ms,这个值只是windows每隔多久时间给程序发送WM_TIMER消息。

lpTimerFunc是一个回调函数的指针,如果lpTimerFunc为NULL,系统将向应用程序队列发送WM_TIMER消息;如果lpTimerFunc指定了一个值,DefWindowProc将处理WM_TIMER消息时调用这个lpTimerFunc所指向的回调函数, 所以即使使用TimerProc代替WM_TIMER也需要向窗口分发消息。

SetTimer的返回值:如果hWnd为NULL,返回值为新建立的timer的ID,如果hWnd非NULL,返回一个非0整数,如果SetTimer调用失败则返回0。

KillTimer的函数原型为:BOOL KillTimer ( HWND hWnd , UINT_PTR uIDEvent ) ;

WM_TIMER消息:

消息参数:wParam和lParam

wParam为计时器ID,wParam的值将随传递到窗口过程中的WM_TIMER消息的不同而不同。

lParam为指向TimerProc的指针,如果调用SetTimer时没有指定TimerProc,则lParam为NULL。

三种使用计时器的方法:

I.将第四个参数lpTimerFunc置为NULL而不使用TimerProc;在窗口过程中处理WM_TIMER消息。

II. 将第四个参数lpTimerFunc指向TimerProc函数。使用TimerProc函数处理WM_TIMER消息;

III.第一个参数hWnd设为NULL,第四个参数设为TimerProc函数指针。


本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/mallocguy/archive/2009/01/03/3691272.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值