装修问题

vc定时器id重复怎么设置?

提问者:同济装潢设计2024-05-19

你在使用SetTimer设置定时器时,应该对第一个参数指定不同的数,如:  
   m_nTimer1  =  SetTimer(1,  2000,  0);  
   m_nTimer2  =  SetTimer(2,  3000,  0);  
   m_nTimer3  =  SetTimer(3,  4000,  0);  
   多个定时器都共享一个OnTimer函数。OnTimer函数如下  
   void  OnTimer  (UINT  TimerVal)  
   OnTimer的参数TimeVal来区分这几个定时器。如果是上面2秒的定时器发生,该参数为1;如果是3秒的,该参数为2;如果为4秒的,该参数为3。

Pistachio陆 272024-05-18

如果我要加入两个或者两个以上的  timer怎么办?    继续用SetTimer函数吧,上次的timer的ID是1,这次可以是2,3,4。。。。    SetTimer(2,1000,NULL);    SetTimer(3,500,NULL);    嗯,WINDOWS会协调他们的。当然onTimer函数体也要发生变化,要在函数体内添加每一个timer的处理代码:    onTimer(nIDEvent)    {    switch(nIDEvent)    {    case  1:........;    break;    case  2:.......;    break;    case  3:......;    break;    }    }    Timer事件,即定时器事件,是在游戏编程中,经常使用的一个事件。借助它可以产生定时执行动作的效果。

jiajia1994 82024-05-23

如果只需要一次,那么可以在OnTimer中调用KillTimer(nIDEvent);
  如果需要多次,那么可以这样:
  1234567891011void  CXXX::OnTimer(UINT  nIDEvent  )
  {
  static  int  times  =  0;
  //  do  what  you  want
  if(++times  >  次数限制)
  {
  times  =  0;
  KillTimer(nIDEvent);
  }
  }

减肥的小肉包 102024-05-19