在用settimer之前要知道;
1.同1个 settimer(,,)在一个循环里设置一次就行了,要是让其不断的set,是很可能执行不到ontimer()消息处理函数的,因为每次set都重新计时;
2.计时完毕,执行ontimer(),然后会重新计时的;
3.要销毁计时,用killtimer,要是想再计时,那就再settimer咯。
下面开始:
首先,要设置定时器。
在init中(或其他的初始化函数里),调用函数
- UINT SetTimer(
- UINT nIDEvent,//定时器标记,
- UINT nElapse,//间隔时间
- void ( CALLBACK* lpfnTimer ) (HWND, UINT, UINT, DWORD) = NULL
- )
如
- settimer(1,2000,NULL);
设置定时器1的间隔为2000毫秒。
其次,添加ontimer消息处理函数代码。
- void OnTimer(
- UINT_PTR nIDEvent
- );
在ontimer中的程序在定时器被触发的时候运行。
如果程序中有多个定时器,则他们共用一个ontimer消息处理程序。
在ontimer中,可以通过判断定时器标志(nIDEvent)来区分不同的定时器。
假设设置了三个定时器,标记分别为1,2,3。如
- settimer(1,2000,NULL);
- settimer(2,3000,NULL);
- settimer(3,5000,NULL);
则在ontimer消息处理函数中
- void OnTimer(
- UINT_PTR nIDEvent
- ){
- switch (nIDEvent)
- {
- case 1:
- //do something
- break;
- case 2:
- //do something
- break;
- case 3:
- //do something
- break;
- default:
- }
- }