使用虚拟键停止计时器

时间:2011-01-31 16:53:06

标签: c++ winapi timer virtual key

我已经创建了一个处理虚拟键的基本窗口。案例VK_UP初始化一个从9向后计数的计时器。如果达到0或按下VK_DOWN,则可以停止计时器。问题是,当我用VK_UP初始化定时器时,程序会停止,直到定时器达到0.如何用VK_DOWN中断(停止)定时器?

一如既往,我尝试过搜索,但无济于事。

编辑:这是窗口程序:

unsigned Seconds( 9 );
case WM_KEYDOWN:
     {
         switch( wParam )
         {
             case VK_UP:
                  {
                      while( Seconds > 0 )
                      {
                          wait( 1 );
                          Seconds--;
                      }
                  }
                  break;
         }
         break;
     }

以上是我上面使用的wait( )方法:

void wait( unsigned TotalSeconds )
{
    clock_t Wait( clock( ) + ( TotalSeconds * CLOCKS_PER_SEC ) );
    while( clock( ) < Wait )
    {
        Sleep( 1 );
    }
}

感谢。

1 个答案:

答案 0 :(得分:2)

使用实时计时器,而不是计数循环。查看SetTimer()。理解Windows的事件驱动编程模型非常重要,任何关于Windows编程的书都会很好地涵盖它,比如Petzold的。