MFC中计时器问题

f515313059 2010-11-15 10:42:27
今天在写程序是遇到一个很奇怪的问题,现在虽然解决了但我还没找到问题的原因。今天在给以前的一个小软件加一个功能时我在代码中加了一个计时器Timer()

然后在OnTimer()中对这个计时器响应,这个响应函数大概是这样的:

OnTimer(......)

{

    if (nIdEvent = Timer1)

    {

        ......

    }

    else if (nIdEvent == Timer2)

    {

        char dataBuf[100];

        .....

    } 

    ......

}

问题是这样写完后当程序运行时出现了莫名其妙的错误,第二个计数器中的响应代码会影响到第一个计时器的处理代码,而且当程序刚开始运行时第二个计时器都还没启动。后来排除了很久发现是第二个计时器的处理代码中所定义的数组的问题,就是dataBuf[100]的问题,如果把它放在if语句的前面就没有问题了。我不知道这是为什么?这里把它放在if语句的分枝中和外面所申请的内存都应该是在栈上的,它们的主要区别不知道是什么?????????   
...全文
339 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2010-12-08
  • 打赏
  • 举报
回复
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖

相关规定详见界面界面版关于版主结帖工作的具体办法
sd6814466 2010-11-16
  • 打赏
  • 举报
回复
除了那个“==”与“=”的问题,脚着不应该。。。
代码太短。。。哪能看出那个dataBuf的影响呢。。。
haogeai123 2010-11-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 clhposs 的回复:]

nIdEvent = Timer1 ? == 吧!
[/Quote]++
jhayumu 2010-11-16
  • 打赏
  • 举报
回复
if (nIdEvent = Timer1)
hgbsam 2010-11-16
  • 打赏
  • 举报
回复
应该是“==”
向立天 2010-11-16
  • 打赏
  • 举报
回复
if (nIdEvent = Timer1)
要是你代码就是这么写的出问题很正常
luckzengwei 2010-11-16
  • 打赏
  • 举报
回复
在用定时器的时候一般不用if.....else语句,感觉那个有点别扭。直接列出定时器存在的几种可能可能情况,用if或者直接switch就可以了
Eleven 2010-11-16
  • 打赏
  • 举报
回复
代码贴完整
tigerMayDo 2010-11-16
  • 打赏
  • 举报
回复
if (nIdEvent = Timer1) 这里==。 然后看不出别的问题
huminer 2010-11-16
  • 打赏
  • 举报
回复
代码详细些,别人才能帮到你
Noak_ark 2010-11-16
  • 打赏
  • 举报
回复
把"=="写成"="这样的事情我也犯过,找了好久挺郁闷
这不是鸭头 2010-11-15
  • 打赏
  • 举报
回复
当定时器里太费时的话。很可能就出现想不到的问题。
太费时的话可以用线程。
CreateEvent
WaitForSingleObject
wltg2001 2010-11-15
  • 打赏
  • 举报
回复
代码给的太少了,看不出什么问题,另外,if (nIdEvent = Timer1)这个应该是笔误吧。
clhposs 2010-11-15
  • 打赏
  • 举报
回复
nIdEvent = Timer1 ? == 吧!

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧