在 OnTimer里面设置的定时器,间隔为100Ms,在里面大概是这样的
if(m_index)
{
.............
.............
.............
m_index=false;
AfxMessageBox(m_index);
KillTimer(1);
return ;
}然后第一次输出的会是 1,以后会输出几次0.
我给改成下面这样
if(m_index)
{
KillTimer(1);
.............
.............
.............
m_index=false;
AfxMessageBox(m_index);
return ;
}就只会输出一次 1.为什么会出现上面这种情况啊,我用spy++查看这个窗口的消息,显示的是执行完一次就没有这个定时器消息了啊,后面的那几条是怎么回事?我在m_index=false;下断点,单步执行的时候就只会弹出一次 1,按理说应该是每隔100Ms,系统就会把一个定时器消息放到消息队列,然后等待上条消息执行结束才会执行这个定时器消息,高手解释下。还有个问题就是如果在执行完KillTimer(1),以后,放到消息队列中的与之对应的定时器消息会不会一同取消呢?
if(m_index)
{
.............
.............
.............
m_index=false;
AfxMessageBox(m_index);
KillTimer(1);
return ;
}然后第一次输出的会是 1,以后会输出几次0.
我给改成下面这样
if(m_index)
{
KillTimer(1);
.............
.............
.............
m_index=false;
AfxMessageBox(m_index);
return ;
}就只会输出一次 1.为什么会出现上面这种情况啊,我用spy++查看这个窗口的消息,显示的是执行完一次就没有这个定时器消息了啊,后面的那几条是怎么回事?我在m_index=false;下断点,单步执行的时候就只会弹出一次 1,按理说应该是每隔100Ms,系统就会把一个定时器消息放到消息队列,然后等待上条消息执行结束才会执行这个定时器消息,高手解释下。还有个问题就是如果在执行完KillTimer(1),以后,放到消息队列中的与之对应的定时器消息会不会一同取消呢?
我给改成下面这样
if(m_index)
{
KillTimer(1);
.............
.............
.............
m_index=false;
AfxMessageBox(m_index);
SetTimer(1,100, NULL);
return ;
}就只会输出一次 1.
你应该这样
此时定时器还是在运行状态,就会收到下一个定时器超时事件。
加了AfxMessageBox(m_index); 以后,第一次回弹出 1 ,以后会弹出很多次 0 ,我有个
if(m_index)的判断啊,怎么会弹出 0 呢?