2 listerci ListerCi 于 2016.09.22 21:24 提问

win32编程关闭定时器后再重新启动,按键失效了 50C

用win32写了个贪吃蛇的小游戏,想加入一个暂停功能。暂停时关闭定时器,继续时再启动定时器。
但是暂停后重启,发现用来控制蛇的方向键失效了,请问是什么原因?
暂停的代码,g_Pause == true 时表示处于暂停状态____
图片说明
方向控制的代码:
图片说明

3个回答

coding_hello
coding_hello   2016.09.22 22:07

暂停恢复后,在case WM_KEYDOWN里面打印出g_state和g_pause的值看看

ListerCi
ListerCi 跟这个无关,就算把这个判断删了也一样
接近 2 年之前 回复
wind612
wind612   2016.09.23 10:18

单步调试一下就可以了。

wangweiqiang1325
wangweiqiang1325   2016.09.23 16:45

若果不会gbd的调试方法,你可以在每个判断中加入打印消息,去追踪,看看出现问题的时候每个参数是否变化跟你定义的一样

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
实现定时器执行中不能二次触发
有时候我们想用事件控制定时器的触发,同时还要求定时器没有结束时不能二次触发。对此我进行了研究,给出了我的解决思路。
[笔记]关于JavaScript定时器如何清除和重启
方法 //定时器的清除和重启 var t=setInterval(fun1,500) //fun1是你的函数 var fun1=function(){ //写入你的函数 ; } clearInterval(t)//清除定时器 t=setInterval(fun1,500)//重新开始定时器 提示:要先清除,后设置,否则定时器永远清除不了。 例子: 一个可复用的延时显隐下拉菜单的js
js中clearInterval的重新执行/重新开始
问题描述:系统进入页面,可以通过setInterval的方式进行定时执行某一个任务,当使用clearInterval之后需要再次调用setInterval,却不能够再次让setInterval执行的函数再次执行,本篇日志中,没有使用clearInterval,但也几乎实现了clearInterval的功能。希望能帮助到大家。String path = request.getContextPath(
Win32控制台中使用定时器的方法
在MFC中用OnTimer()函数就可以很方便的实现定时事件,但在Win32控制台工程中没有消息循环,MSDN里也不推荐把SetTimer()用在Console Applications里。 方法:在一个单独的线程中创建定时器,再通过指定的回调函数来处理定时事件。 #include #include #include UINT cnt = 0; //定时器回调函数 void CALL
C# 退出程序再重新启动
/// /// 退出登录 /// public static void ReLoign() { Application.ExitThread(); Thread thtmp = new Thread(new ParameterizedThreadStart(Run));
iOS 定时器NSTimer的开启与关闭
调用一次计时器方法 myTimer = [NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(scrollTimer) userInfo:nil repeats:NO]; //不重复,只调用一次。timer运行一次就会自动停止运行 重复调用计时器方法: timer = [NSTime
win32编程键盘与鼠标
case WM_CHAR: switch(wParam) { case 'a': aa++; InvalidateRect(hWnd,NULL,TRUE);                 } break; 当接收到字符,如果是a,进行操作,如果不是字符,标识用虚拟键盘,如空格是VK_SPACE。 当敲击键盘a时依次产生3个消息: WM_KEYDOWN WM_
win32 SetTimer注意事项
1.SetTimer(HWND,UINT,UINT,TIMERPROC);第一个参数设置为捕获该定时消息的窗口句柄, 第二个参数是定时器的id,第三个是以毫秒为单位的定时长度,最后一个参数设置为NULL,可以使窗口的回调函数进行处理WM_TIMER消息。一般来说,在窗口创建时进行SetTimer调用;在回调函数中添加WM_TIMER的响应。然后再窗口销毁的时候进行计时器的销毁:KillTimer(
ASP.NET 定时执行任务 global.asax 执行一段时间后停止
using System;       using System.Data;       using System.Configuration;       using System.Collections;       using System.Web;       using System.Web.Security;       using System.Web.Ses
跟我一起玩Win32开发(24):计时器
有好些时间没写博客了,今天要来耍一下计时器,就是我们常说的Timer,它虽然不是什么复杂的东西,也称不 上牛X,不过,用处还是不少的,对于那些需要每隔一定时间执行一次的任务,那是相当有用。 先来认识一下一对函数,注意,是一对,不是一个。 SetTimer——设置并启用计时器; KillTimer——取消计时器。 现在你明白为什么要一对的原因了,就好比进程操作,有启动或创建进程的函数,就肯定