文档详情

VC++游戏编程之定时器.doc

发布:2017-03-20约1.23万字共11页下载文档
文本预览下载声明
一、定时器 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
显示全部
相似文档