Окт 16

Стандартный таймер

Стандартный таймер в Windows — это устройство, периодически уведомляющее приложение о завершении заданного интервала времени. Вы можете присоединить стандартный таймер к своей программе с помощью функции SetTimer:
UINT_PTR SetTimer(
HWND hWnd, // дескриптор окна
UINT_PTR nIOEvent, // идентификатор таймера
UINT uElapse, // интервал в миллисекундах
TIMERPROC IpTimeProc // адрес функции - обработчика сообщения WM_TIMER );
Первый параметр, hWnd, содержит дескриптор окна, ассоциированного с данным таймером. Если этот параметр равен NULL, то с таймером не связывается никакое окно и сообщения от таймера будут приходить в специально созданную для этого функцию.
Второй параметр, nIDEvent, позволяет указывать идентификатор таймера, которым может быть произвольное целое число (но не нуль). Если программа использует более одного таймера, то рекомендуется определить идентификаторы таймеров в виде именованных констант, например, с помощью типа enum или директивы #define. Это улучшает читаемость кода программы. Если параметр hWnd равен NULL, то параметр nIDEvent игнорируется.
Третий параметр, uElapse, задает интервал, который может находиться в пределах (теоретически) от 1 до 4 294 967 295 мс, что составляет около 50 дней. Это значение определяет темп, с которым Windows будет посылать вашей программе сообщения WMJFTMER. Сообщения WM_TIMER направляются либо оконной процедуре для окна hWnd, если параметр IpTimeProc равен NULL, либо функции обратного вызова с адресом IpTimeProc — в противном случае.
Если на месте hWnd указано значение NULL, то возвращаемое функцией значение является идентификатором созданного таймера. В любом случае функция SetTimer возвращает нулевое значение, если она не смогла создать таймер.
Если таймер по истечении некоторого времени больше не нужен, то рекомендуется его уничтожить, вызвав функцию KillTimer:
BOOL KillTimer(HWND hWnd. UINT_PTR uIDEvent):
В параметре hWnd указывается дескриптор окна, с которым был связан таймер. Это значение должно совпадать со значением hWnd, указанным при вызове функции SetTimer.
Второй параметр содержит идентификатор уничтожаемого таймера. На его месте используется либо идентификатор, указанный при создании таймера, если он создавался для окна, либо значение, возвращенное функцией SetTimer (для таймера, имеющего собственную функцию обработки сообщений).