win32 SetTimer注意事项

来源:互联网 发布:淘宝运营助理工作总结 编辑:程序博客网 时间:2024/05/29 09:25

1.SetTimer(HWND,UINT,UINT,TIMERPROC);第一个参数设置为捕获该定时消息的窗口句柄, 第二个参数是定时器的id,第三个是以毫秒为单位的定时长度,最后一个参数设置为NULL,可以使窗口的回调函数进行处理WM_TIMER消息。一般来说,在窗口创建时进行SetTimer调用;在回调函数中添加WM_TIMER的响应。然后再窗口销毁的时候进行计时器的销毁:KillTimer(HWND,UINT);参数分别是窗口句柄和定时器ID。

 

2.SetTimer(HWND,UINT,UINT,TIMERPROC);与第一种方法唯一的区别就是最后一个参数不是NULL,而是一个自己定义的回调函数,这样,WM_TIMER消息将被自己定义回调函数获取,进行处理。同样要在结束使用的时候KillTimer(HWND,UINT);

 

3.IDtimer = SetTimer(HWND,UINT,UINT,TIMERPROC);将第一个参数设置为NULL ,第二个参数设置为0,第三个和第四个参数的设置与第二种方法一致,这样创建一个定时器将返回一个定时器ID,在销毁定时器时调用KillTimer(NULL,IDtimer)。这种方式适合多次定时容易混淆定时器ID的程序,因为其返回值管理定时器ID,而不要自己去管理。


注意如果HWND为NULL的时候,第二个参数无效,即不能再timer的响应函数中通过ID判断不同的定时器。



如果timer的响应函数中调用类的成员函数,有两种方式

一、把类的成员函数设为static,该成员函数直接成为定时器回调函数

class A

{

void static  CALLBACK Fuc();

}


声明时

SetTimer(NULL,id,1000,A::Func);

实现

void CallBack A::Func()

{

}

二、

 声明一个该类的全局变量,初始化时把赋值为this指针,定时器响应函数中通过该全局的变量调用成员函数

0 0
原创粉丝点击