【问题标题】:Stopping a Timer With Virtual Keys使用虚拟键停止计时器
【发布时间】:2011-01-31 16:53:05
【问题描述】:

我创建了一个处理虚拟键的基本窗口。案例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 );
    }
}

谢谢。

【问题讨论】:

  • 如果是windows请加windows或者winapi标签
  • 请显示您启动计时器的代码。

标签: c++ winapi timer virtual key


【解决方案1】:

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

【讨论】:

  • 好的。我会调查的。顺便谢谢你的回复。
猜你喜欢
  • 2021-01-20
  • 2023-04-11
  • 2020-10-15
  • 1970-01-01
  • 2022-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多