赞助

C++类的静态成员变量初始化 Win32 API 定时器使用

1.类的静态成员变量

.h 类声明入下

1 class A
2 {
3 public:
4   static int x;
5 };

.cpp文件

这样初始化.
int A::x = 0;

 

2.定时器使用

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);

注:类中的回调成员函数必须为静态的

.h文件

 1 #ifndef _TIMER_H
 2 #define _TIEER_H
 3 class Timer
 4 {
 5 public:
 6     Timer();
 7 
 8     ~Timer();
 9 
10     static VOID CALLBACK MyTimerProc(HWND hwnd,UINT message,UINT iTimerID,DWORD dwTime);
11 };
12 #endif

.cpp 文件

 1 #include "Timer.h"
 2 #include <windows.h>
 3 
 4 Timer::Timer()
 5 {
 6     ::SetTimer(this,1000,1000,(TIMERPROC)MyTimerProc);
 7 }
 8 
 9 Timer::~Timer()
10 {
11     ::KillTimer(this,1000);
12 }
13 
14 VOID CALLBACK Timer::MyTimerProc(HWND hwnd,UINT message,UINT iTimerID,DWORD dwTime)
15 {
16     //add your code
17 }

 

 

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

posted @ 2014-11-18 15:46  车臣  阅读(993)  评论(0编辑  收藏  举报