Выбрать главу

Обратите внимание, что значение, возвращаемое функцией timeGetTime , имеет тип DWORD . Возвращаемое значение сбрасывается в нуль каждые 2^32 миллисекунд, что составляет примерно 49.71 дней. Это может вызвать проблемы в коде, который напрямую использует возвращаемое функцией timeGetTime значение в вычислениях, особенно, когда значение используется для контроля выполнения кода. Вы должны всегда в вычислениях использовать разницу между двумя возвращаемыми функцией timeGetTime значениями.

Windows NT /2000: Точность по умолчанию для функции timeGetTime может быть пять или более миллисекунд, в зависимости от машины. Вы можете использовать функции timeBeginPeriod и timeEndPeriod для увеличения точности timeGetTime . Если вы это сделаете, минимальная разница между двумя успешно возвращенными функцией timeGetTime значениями может быть меньше минимального периода, установленного функциями timeBeginPeriod и timeEndPeriod . Для измерения коротких интервалов времени с высокой точностью используйте функции QueryPerformanceCounter и QueryPerformanceFrequency.

Windows 95: Точность по умолчанию для функции timeGetTime составляет одну миллисекунду. Другими словами, функция timeGetTime может возвращать значения, отличающиеся друг от друга только на одну миллисекунду. И не имеет значения, были ли вызваны функции timeBeginPeriod и timeEndPeriod.

Требования

Windows NT /2000/XP : Включена в Windows NT 3.1 и выше.

Windows 95/98/Me : Включена в Windows 95 и выше.

Заголовок: Объявлена в Mmsystem.h ; подключать Windows.h .

Библиотека: Используйте Winmm.lib .

См . также

timeGetSystemTime, MMTIME, timeBeginPeriod, timeEndPeriod, QueryPerformanceCounter, QueryPerformanceFrequency.

timeKillEvent

Функция timeKillEvent отменяет указанное событие таймера

MMRESULT timeKillEvent (

UINT uTimerID

);

Параметры

uTimerID - идентификатор отменяемого события таймера. Этот идентификатор был возвращен функцией timeSetEvent , когда устанавливалось событие таймера.

Возвращаемые значения

Возвращается TIMERR_NOERROR в случае успеха или MMSYSERR_INVALPARAM, если указанное событие таймера не существует.

Требования

Windows NT /2000/ XP : Включена в Windows NT 3.1 и выше.

Windows 95/98/ Me : Включена в Windows 95 и выше.

Заголовок: Объявлена в Mmsystem.h ; подключать Windows.h.

Библиотека: Используйте Winmm.lib.

См . также

timeSetEvent.

timeSetEvent

Функция timeSetEvent запускает указанное событие мультимедиа таймера. Мультимедиа таймер выполняется в своем собственном потоке. После активации события, оно вызывает указанную функцию обратного вызова или устанавливает, или вызывает срабатывание указанного события.

MMRESULT timeSetEvent (

UINT uDelay,

UINT uResolution,

LPTIMECALLBACK lpTimeProc,

DWORD_PTR dwUser,

UINT fuEvent

);

Параметры

uDelay - задержка события в миллисекундах. Если это значение лежит вне диапазона допустимых значений задержки, поддерживаемых таймером, функция возвращает ошибку.

uResolution - разрешение событий таймера в миллисекундах. Разрешение увеличивается при уменьшении значений; разрешение, установленное в нуль, показывает, что периодические события будут происходить с наибольшей возможной точностью. Для уменьшения системных издержек, тем не менее, вы должны использовать максимальное значение, соответствующее вашему приложению.

lpTimeProc - указатель на функцию обратного вызова, которая вызывается по истечению одиночного события или периодически по истечению периодических событий. Если fuEvent определяет флаг TIME_CALLBACK_EVENT_SET или TIME_CALLBACK_EVENT_PULSE, то значение параметра lpTimeProc интерпретируется как дескриптор события. Для любых других значений fuEvent , значение lpTimeProc интерпретируется как указатель на функцию со следующей сигнатурой:

void ( CALLBACK )( UINT uTimerID , UINT uMsg , DWORD_PTR dwUser , DWORD_PTR dw1 , DWORD_PTR dw2 ).

dwUser - определяемые пользователем данные.

fuEvent - тип события таймера. Может принимать одно из следующих значений:

Значение

Пояснение

TIME_ONESHOT

Событие происходит один раз, после uDelay миллисекунд.

TIME_PERIODIC

Событие происходит каждые uDelay миллисекунд.

Параметр fuEvent также может принимать одно из следующих значений:

Значение

Пояснение

TIME_CALLBACK_FUNCTION

По истечении времени Windows вызывает функцию, определяемую значением параметра lpTimeProc. Поведение по умолчанию.

TIME_CALLBACK_EVENT_SET

По истечении времени Windows вызывает функцию SetEvent для установки события, определяемого значением параметра lpTimeProc. Параметр dwUser игнорируется.

TIME_CALLBACK_EVENT_PULSE

По истечении времени Windows вызывает функцию PulseEvent для срабатывания события, определяемого значением параметра lpTimeProc. Параметр dwUser игнорируется.

TIME_KILL_SYNCHRONOUS

Передача этого флага предотвращает происхождение события после вызова функции timeKillEvent.

Возвращаемые значения

Возвращается идентификатор события таймера в случае успеха, или ошибка в противном случае. Функция возвращает NULL, если ее вызов завершился неудачей, и событие таймера не было создано. (Идентификатор события также передается в функцию обратного вызова).

Комментарии

Каждый вызов timeSetEvent для периодических событий таймера требует соответствующего вызова функции timeKillEvent . Создание события с флагами TIME_KILL_SYNCHRONOUS и TIME_CALLBACK_FUNCTION предотвращает происхождение события после вызова функции timeKillEvent .