您的位置:首页 > 其它

SetTimer 几种用法(定时器)

2016-08-09 11:58 274 查看
UINT_PTR SetTimer(

 HWND hWnd, // 窗口句柄

UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器

UINT nElapse, // 时间间隔,单位为毫秒

TIMERPROC lpTimerFunc // 回调函数

);

返回值:

类型:UINT_PTR

如果函数成功,hWnd参数为0,则返回新建立的时钟编号,可以把这个时钟编号传递给KillTimer来销毁时钟.

如果函数成功,hWnd参数为非0,则返回一个非零的整数,可以把这个非零的整数传递给KillTimer来销毁时钟.

如果函数失败,返回值是零.若想获得更多的错误信息,调用GetLastError函数.

Setimer没说一定要Hwnd.TIMERPROC lpTimerFunc // 回调函数应该可用调用吧。你试试,我也没试过 

方法一

这是最方便的一种方法,它让Windows把WM_TIMER消息发送到应用程序的正常窗口消息处理程序中,SetTimer呼叫如下所示:

SetTimer (hwnd, 1, uiMsecInterval, NULL) ;        

第一个参数是其窗口消息处理程序将接收WM_TIMER消息的窗口句柄。第二个参数是定时器ID,它是一个非0数值,在整个例子中假定为1。第三个参数是一个32位无正负号整数,以毫秒为单位指定一个时间间隔,一个60,000的值将使Windows每分钟发送一次WM_TIMER消息。

您可以通过呼叫

KillTimer (hwnd, 1) ;

方法二

设定定时器的第一种方法是把WM_TIMER消息发送到通常的窗口消息处理程序,而第二种方法是让Windows直接将定时器消息发送给您程序的另一个函数。

SetTimer (hwnd, iTimerID, iMsecInterval, TimerProc) ;

方法三

设定定时器的第三种方法类似于第二种方法,只是传递给SetTimer的hwnd参数被设定为NULL,并且第二个参数(通常为定时器ID)被忽略了,最后,此函数传回定时器ID:

iTimerID = SetTimer (NULL, 0, wMsecInterval, TimerProc) ;        

如果没有可用的定时器,那么从SetTimer传回的iTimerID值将为NULL。

KillTimer的第一个参数(通常是窗口句柄)也必须为NULL,定时器ID必须是SetTimer的传回值:

KillTimer (NULL, iTimerID) ;

注意:调用SetTimer函数的线程要存在,因为定时器要依赖线程队列来接收消息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: