Остановка таймера с виртуальными ключами - PullRequest
0 голосов
/ 31 января 2011

Я создал основное окно, которое обрабатывает виртуальные ключи. Регистр 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 Ответ

2 голосов
/ 31 января 2011

Используйте реальный таймер, а не счетный цикл.Обзор SetTimer () .Понимание модели событийно-ориентированного программирования для Windows очень важно, она хорошо освещена в любой книге о программировании для Windows, например, в Petzold.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...