Функция |
Значение |
|||||
GetTickCount |
Возвращает число миллисекунд, прошедших с момента запуска Windows |
|||||
KillTimer |
Удаляет событие таймера и освобождает соответствующие системные ресурсы |
|||||
QueryPerformanceCounter |
Возвращает текущее значение высокоточного счетчика производительности |
|||||
QueryPerformanceFrequency |
Возвращает число приращений в секунду высокоточного счетчика производительности |
|||||
SetTimer |
Создает событие таймера или изменяет параметры настройки события таймера |
|||||
GetTickCount • Windows 98 • Windows 2000 |
||||||
Описание |
Функция GetTickCount возвращает число миллисекунд, прошедших с момента запуска Windows. Вообще говоря, эта функция вычисляет время, прошедшее между последовательными ее вызовами. Значение, возвращаемое в результате вызовов функции GetTickCount во время обработки сообщений, будет отличаться от значения, возвращаемого функцией GetMessageTime, поскольку GetTickCount возвращает число миллисекунд, прошедших с момента запуска Windows и до момента вызова этой функции, тогда как GetMessageTime — число миллисекунд, прошедших с момента запуска Windows и до момента, когда сообщение поместилось в очередь сообщений. |
|||||
Синтаксис |
DWORD GetTickCount(VOID) |
|||||
Параметры |
Параметры отсутствуют. |
|||||
Возвращаемое значение |
DWORD: Если выполнение рассматриваемой функции оказывается успешным, возвращается число миллисекунд, прошедших с момента запуска системы. |
|||||
Включаемый файл |
winbase.h |
|||||
См. также |
GetMessageTime. |
|||||
Сообщения, связанные с данной функцией |
||||||
WM_TIMER |
||||||
Пример |
В приведенном ниже примере демонстрируется использование функции GetTickCount для возврата числа миллисекунд, прошедших с момента запуска системы. Для отображения этого значения достаточно щелкнуть на пункте меню Test!. |
|||||
См. \local-sources\chap24\24-01.txt |
||||||
KillTimer • Windows 98 • Windows 2000 |
||||||
Описание |
Функция KillTimer удаляет указанный таймер, установленный с помощью функции SetTimer. Эта функция не удаляет сообщения WMJTIMER, уже отправленные в очередь сообщений. |
|||||
Синтаксис |
BOOL Kiimmer(HWND hWnd, UINT uTimerlD) |
|||||
Параметры |
||||||
HWnd |
HWND: Дескриптор окна, связанного с указанным таймером. Значение этого параметра должно быть аналогично значению, которое передавалось в функцию SetTimer. В случае, когда таймеры не связаны с окнами, можно передать NULL. |
|||||
uTimerlD |
UINT: Идентификатор удаляемого таймера. Если приложение передало функции SetTimer действительный дескриптор окна, тогда значение этого параметра должно быть аналогично идентификатору таймера, переданного в SetTimer. Если же функция SetTimer использовалась в приложении со значением NULL для дескриптора окна, тогда значение этого параметра должно быть аналогично идентификатору таймера, возвращенного функцией SetTimer. |
|||||
Возвращаемое значение |
BOOL: Если выполнение рассматриваемой функции оказывается успешным, возвращается TRUE. В противном случае, если указанный таймер не существует, возвращается FALSE. Если же возникнет ошибка, то для возврата ее кода следует воспользоваться функцией GetLastError. |
|||||
Включаемый файл |
winuser.h |
|||||
См. также |
SetTimer. |
|||||
Сообщения, связанные с данной функцией WMJTIMER |
||||||
Пример |
Когда пользователь выбирает в приведенном ниже примере пункт меню Test!, таймер устанавливается. Если же пользователь выбирает этот пункт меню еще раз в течение периода времени, определяемого таймером, отображается окно сообщений с сообщением You're fast! (Вы быстры!). Если по истечении периода времени, определяемого таймером, ничего не происходит, отображается окно сообщений с сообщением You're too slow, You lose! (Вы слишком медлительны и поэтому проиграли!). При любом условии перед отображением окна сообщения таймер удаляется. |
|||||
См. \local-sources\chap24\24-02. txt |
||||||
QueryPerformanceCounter + Windows 98 *• Windows 2000 |
||||||
Описание |
Функция QueryPerformanceCounter осуществляет выборку текущего значения высокоточного счетчика производительности, если таковой существует. Частота обновления этого счетчика определяется значением, которое возвращает QueryPerformanceFrequency. А поскольку это 64-разрядное значение, оно может оказаться более точным, нежели значение, возвращаемое функцией GetTickCount. Столь высокая точность измерения времени требуется, как правило, при определении производительности системы, в которой в течение считанных миллисекунд может произойти большой объем транзакций. |
|||||
Синтаксис |
BOOL QueryPerformanceCounter(LARGE_INTEGER* p Performance Count) |
|||||
Параметры |
||||||
pPerformanCount |
||||||
LARGE INTEGER*: Указатель на 64-разрядное значение, в котором хранится счетчик производительности. Если установленные аппаратные средства не поддерживают высокоточный счетчик производительности, функция вернет 0. Для определения частоты обновления счетчика производительности применяется функция QueryPerformanceFrequency. |
||||||
Возвращаемое значение |
BOOL: Если установленные аппаратные средства поддерживают высокоточный счетчик производительности, возвращается значение TRUE. В противном случае возвращается FALSE. |
|||||
Включаемый файл |
winbase.h |
|||||
См. также |
QueryPerformanceFrequency. |
|||||
Пример |
Когда пользователь выбирает в приведенном ниже примере пункт меню Test!, в окне сообщений отображается текущий отсчет и частота обновления высокоточного счетчика производительности, если только аппаратные |
|||||
средства поддерживают его. В противном случае появляется окно с сообщением об ошибке. |
||||||
Си. \local-sources\chap24\24-03.txt |
||||||
QueryPerformanceFrequency • Windows 98 • Windows 2000 |
||||||
Описание |
Функция QueryPerformanceFrequency выбирает частоту обновления высокоточного счетчика производительности, если установленные аппаратные средства поддерживают такой счетчик. Эта частота представляет собой количество тактов в секунду, подсчитываемых высокоточным счетчиком производительности. |
|||||
Синтаксис |
BOOL QueryPerformanceFrequency (LARGEJNTEGER* plicksPerSecond) |
|||||
Параметры |
||||||
рTtcksPerSecond |
LARGE_INTEGER*: Указатель на 64-разрядное значение, которое принимает количество приращений в секунду счетчика производительности. |
|||||
Возвращаемое значение |
BOOL: Если установленные аппаратные средства поддерживают высокоточный счетчик производительности, возвращается значение TRUE. В противном случае возвращается FALSE. Для возврата кода ошибки используется функция GetLastError. |
|||||
Включаемый файл |
winbase.h |
|||||
См. также |
QueryPerformanceCounter. |
|||||
Пример |
См. пример применения функции QueryPerformanceCounter. |
|||||
SetTimer • Windows 98 • Windows 2000 |
||||||
Описание |
Функция SetTimer создает либо видоизменяет системный таймер. Таймер представляет собой планируемое событие, которое Windows формирует через указанные промежутки времени. Таймерами можно воспользоваться для формирования сообщений WMJTIMER либо для организации прямых вызовов функции обратного вызова, определяемой приложением. |
|||||
Синтаксис |
UINT SetTimer(HWND hWnd, UINT uTimerlD , UINT ulnterval, TIMERPROC fiiFimerProc) |
|||||
Параметры |
||||||
hWnd |
HWND: Окно, связанное с указанным таймером. Это окно должно принадлежать вызывающей нити. Если в этом параметре передается NULL, тогда таймер с окном не связывается, а это означает, что в очереди задач все еще формируются сообщения WMJTIMER, однако они не обрабатываются в обработчике сообщений класса окна, а параметр uTimerlD игнорируется. |
|||||
uTimerID |
UINT: Ненулевое числовое значение, связанное с указанным таймером. Если указывается новый идентификатор, тогда создается таймер. Если же задается существующий идентификатор, тогда рассматриваемая функция внесет поправки в информацию о таймере, а не создаст новый таймер. Если передается 0, система сформирует и вернет неиспользованный идентификатор таймера. Этот параметр игнорируется, если установлено значение NULL параметра hWnd. |
|||||
iInterval |
UINT: Значение временного промежутка в миллисекундах. |
|||||
nTimerРгос |
TIMERPROC: Указатель на функцию обратного вызова, определенную в приложении и уведомляющую об истечении установленного промежутка времени. При передаче NULL сообщения WM_TIMER размещаются в очереди сообщений вызывающей нити. Если же параметр hWnd содержит действительный дескриптор окна, тогда сообщения WM_TIMER будет получать оконная процедура данного окна. В противном случае это сообщение должно быть перехвачено в цикле обработки сообщений, применяемом в вызывающей нити. Синтаксис обратного вызова показан ниже. |
|||||
Возвращаемое значение |
UINT: Если выполнение рассматриваемой функции оказывается успешным, возвращается значение, определяющее новый таймер. Это значение можно использовать в приложении для удаления таймера через функцию KillTimer. Если рассматриваемая функция не может создать таймер, возвращается 0. |
|||||
Включаемый файл |
winuser.h |
|||||
"м. также |
KillTimer. |
|||||
Сообщения, связанные с данной функцией |
||||||
WMJTIMER |
||||||
Синтаксис обратного вызова |
||||||
VOID CALLBACK TimerProc(HWND hWnd, UINT uMsg, UINT idEvent, DWORD dwlime) |
||||||
Параметры обратного вызова |
||||||
Wnd |
HWND: Дескриптор окна, связанного с указанным таймером. |
|||||
Msg |
UINT: Сообщение WM_TIMER. |
|||||
dEvent |
UINT: Идентификатор таймера. |
|||||
wTime |
DWORD: Количество миллисекунд, прошедших с момента запуска Windows. Это значение, возвращаемое функцией GetTickCount. |
|||||
Тример |
См. пример применения функции KillTimer. |
|||||
1РЕДУПРЕЖДЕНИЕЗначение, возвращаемое упомянутой выше функцией, представляет собой 32-разрядное количество миллисекунд, прошедших с момента запуска системы. Это значение возвращается к нулю после 49.7 дней (и 2.32 миллисекунд) непрерывной работы системы. В связи с этим следует иметь в виду, что прежде чем брать разность во времени, рассчитанную между двумя последовательными измерениями времени, необходимо проверить, является ли второе измеренное время меньше первого, что происходит в случае сброса в 0 отсчета времени в системных часах. |
||||||
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.