我在ontimer函数里面killtimer以后,怎么定时功能还在启用,这是怎么回事
void CModeDlg::OnTimer(UINT nIDEvent) 
{
if(nIDEvent==ID_TIME_2)
{
MessageBox("ok");
KillTimer(ID_TIME_2);
}
}程序就是上面的一段,理论上不是应该只弹出一个messagebox吗?可是我运行程序以后messagebox一直在弹出(时间间隔设的是500ms)。

解决方案 »

  1.   

    不知道KillTimer能不能在OnTimer里执行..换种方式吧..
    bool tt=false;
    void CModeDlg::OnTimer(UINT nIDEvent) 
    {
    if(nIDEvent==ID_TIME_2&&tt)
    {
    MessageBox("ok");
    tt=false;
    }
    }
      

  2.   

    哦,写错..
    bool tt=true;
    void CModeDlg::OnTimer(UINT nIDEvent) 
    {
    if(nIDEvent==ID_TIME_2&&tt)
    {
    MessageBox("ok");
    tt=false;
    }
    }
    最近脑子不好使...
      

  3.   

    好像不管用,不要在OnTimer里关掉计时器。
    而且,由于你设定的是500ms,所以,每500ms就会调用一次OnTimer,messageBox就会不断弹出.
      

  4.   

    谢谢各位的热情解答。原因查出来了,原来是Messagebox会是killtimer失效,
    如果先killtimer,在messagebox就可以了。