VC++游戏编程之定时器.doc
文本预览下载声明
一、定时器
Timer定时器对象可以再每隔一段时间发出一个时间消息,程序收到消息后,就可以执行一些操作。比如,可以设置定时器来播放静态的连续图片,就可以产生动画效果。这也是通常显示动画的一种方式。
Windows API中有这样的函数:SetTimer()为我们定义一个定时器。函数原型:
UINT_PTR?SetTimer(??
??HWND?hWnd,??????????????//?窗口句柄??
??UINT_PTR?nIDEvent,??????//?定时器代号??
??UINT?uElapse,???????????//?时间设定的值,单位为毫秒??
??TIMERPROC?lpTimerFunc???//?定时器响应函数??
);??
UINT_PTR SetTimer(
HWND hWnd, // 窗口句柄
UINT_PTR nIDEvent, // 定时器代号
UINT uElapse, // 时间设定的值,单位为毫秒
TIMERPROC lpTimerFunc // 定时器响应函数
);
这里举一个小例子:
SetTimer(hwnd,??????????????????//?窗口句柄???
?????????IDT_TIMER1,????????????//?代号??
?????????10000,?????????????????//?10秒??
????????(TIMERPROC)?NULL);??????//?没有响应函数??
???
SetTimer(hwnd,???????????????
?????????IDT_TIMER2,??????????????
?????????5000,??????????????????
????????(TIMERPROC)?NULL);???????
??
case?WM_TIMER:???
????switch?(wParam)???
????{???
????????case?IDT_TIMER1:???
????????????//?执行10秒的操作??
?????????????return?0;????
????????case?IDT_TIMER2:???
????????????//?执行5秒的操作??
????????????return?0;???
}??
SetTimer(hwnd, // 窗口句柄
IDT_TIMER1, // 代号
10000, // 10秒
(TIMERPROC) NULL); // 没有响应函数
SetTimer(hwnd,
IDT_TIMER2,
5000,
(TIMERPROC) NULL);
case WM_TIMER:
switch (wParam)
{
case IDT_TIMER1:
// 执行10秒的操作
return 0;
case IDT_TIMER2:
// 执行5秒的操作
return 0;
}
创建后自然需要删除定时器。KillTimer()就是用来终止某个定时器的BOOL?KillTimer(??
??HWND?hWnd,??????????//?窗口句柄??
??UINT_PTR?uIDEvent???//?定时器代号??
);??
BOOL KillTimer(
HWND hWnd, // 窗口句柄
UINT_PTR uIDEvent // 定时器代号
);
?
运用定时器使预先做好的连续的静态图片播放,形成动画的效果。新建Win32程序,在V中默认使用默认的生成窗口的代码。
接下来,在程序头部添加全局变量:
HBITMAP?girl[7];?//?用于7张人物的位图数组??
HDC?mdc,hmdc;??
int?num;?//?用于计数循环??
HBITMAP girl[7]; // 用于7张人物的位图数组
HDC mdc,hmdc;
int num; // 用于计数循环
?
在InitInstance()函数中添加代码:
BOOL?InitInstance(HINSTANCE?hInstance,?int?nCm
显示全部