Windows API Урок 6. Работаем с таймером
Таймер служит для того, чтобы ваша программа что-то с определенным периодом делала. Например, вы хотите, чтобы раз в секунду ваша программа издавала звуковой сигнал. Или раз в полсекунды меняла заголовок окна.
Для создания таймера используется функция SetTimer, для удаления - KillTimer. Созданный таймер будет посылать в вашу программу сообщение WM_TIMER.
Напишем программу, которая будет раз в секунду издавать звуковой сигнал. Для сего внесем следующие изменения в функцию WinMain:
...
SetTimer(hwnd, 1, 1000, NULL);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
KillTimer(hwnd, 1);
...
Сначала мы создаем таймер функцией SetTimer. Параметры у нее такие: первый - это HWND того окна, к которому таймер относится. У нас оно равно hwnd. Таймер всегда должен относится к определеному окну. Второй параметр - это идентификатор таймера. Мы поставили его в 1. Ели создадим еще один таймер, то для него зададим другой идентификатор (например, 2). Третий параметр определяет, как часто наш таймер будет посылать сообщение WM_TIMER. Эта величина задается в миллисекундах. Значение 1000 означает, что таймер будет посылать сообщение WM_TIMER раз в секунду. Четвертый параметр задает функцию, которая будет обрабатывать сообщение WM_TIMER. Если этот параметр установлен в NULL, то обрабатывать будет оконная процедура (вернее сообщение отправится в очередь сообщений приложения).
Обратите внимание, где мы создаем таймер - в WinMain. Это потому, что мы хотим, чтобы таймер запускался сразу с нашей программой. Но можно его заводить и в другом месте - в оконной процедуре, например.
Нам осталось добавить обработчик для WM_TIMER в оконную процедуру. Это делаем так:
switch (msg){
case WM_TIMER:
MessageBeep(-1);
break;
Запускаем программу. Раз в секунду должен раздаваться звуковой сигнал.
|