|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Example: Creating a Timer
The following example uses the SetTimer function to create two timers. The first timer is set for every 10 seconds, the second for every 5 minutes.
// Set two timers. SetTimer(hwnd, // handle of main window IDT_TIMER1, // timer identifier 10000, // 10-second interval (TIMERPROC) NULL); // no timer callback SetTimer(hwnd, // handle of main window IDT_TIMER2, // timer identifier 300000, // 5-minute interval (TIMERPROC) NULL); // no timer callback
To process the WM_TIMER messages generated by these timers, add a WM_TIMER case statement to the window procedure for the hwnd parameter.
case WM_TIMER: switch (wParam) { case IDT_TIMER1: . . // Process the 10-second timer. . return 0; case IDT_TIMER2: . . // Process the 5-minute timer. . return 0; }
An application can also create a timer whose WM_TIMER messages are processed not by the main window procedure but by an application-defined callback function, as in the following code sample, which creates a timer and uses the callback function MyTimerProc to process the timer's WM_TIMER messages.
// Set the timer. SetTimer(hwnd, // handle of main window IDT_TIMER3, // timer identifier 5000, // 5-second interval (TIMERPROC) MyTimerProc); // timer callback
The calling convention for MyTimerProc must be based on the Microsoft® Win32® callback function, TimerProc. If your application creates a timer without specifying a window handle, your application must monitor the message queue for WM_TIMER messages and dispatch them to the appropriate window.
HWND hwndTimer; // handle of window for timer messages MSG msg; // message structure while (GetMessage(&msg, // message structure NULL, // handle of window to receive the message NULL, // lowest message to examine NULL)) // highest message to examine { // Post WM_TIMER messages to the hwndTimer procedure. if (msg.message == WM_TIMER) {
msg.hwnd = hwndTimer; } TranslateMessage(&msg); // translates virtual-key codes DispatchMessage(&msg); // dispatches message to window }
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Пример: Создание Таймера
Следующий пример использует функцию SetTimer, чтобы создавать два таймера. Первый таймер установлен в течение каждых 10 секунд, второй для каждых 5 минут.
// Установившее два таймера. SetTimer(hwnd, // РУЧКА основного окна IDT_TIMER1, // таймерного идентификатора 10000, // 10- второй интервал (TIMERPROC) НЕДЕЙСТВИТЕЛЬНЫЙ); // никакой таймерный возврат SetTimer(hwnd, // РУЧКА основного окна IDT_TIMER2, // таймерного идентификатора 300000, // 5- подробный интервал (TIMERPROC) НЕДЕЙСТВИТЕЛЬНЫЙ); // никакой таймерный возврат
Для того, чтобы обрабатывать сообщения WM_TIMER сгенерированные этими таймерами, добавьте утверждение случая WM_TIMER к процедуре окна для параметра hwnd.
случай WM_TIMER: ключ (wParam) { случай IDT_TIMER1: . . // Процесс 10- второй таймер. . возврат 0; случай IDT_TIMER2: . . // Процесс 5- подробный таймер. . возврат 0; }
Приложение может также создать таймер, чьи сообщения WM_TIMER не обработаны основной процедурой окна но определенной прикладной функцией возврата, как в кодовом образце следующего, которая создает таймер и использует функцию возврата MyTimerProc, чтобы обрабатывать таймерные сообщения WM_TIMER.
// Установленный таймер. SetTimer(hwnd, // РУЧКА основного окна IDT_TIMER3, // таймерного идентификатора 5000, // 5- второй интервал (TIMERPROC) MyTimerProc); // таймерный возврат
Вызывающая конвенция о MyTimerProc должна быть основана на Microsoft Win32 функция возврата, TimerProc. Если ваше приложение создает таймер не определяя ручку окна, ваше приложение должно проверить очередь сообщения для сообщений WM_TIMER и посылать им в подходящее окно.
HWND hwndTimer; // ручка окна для таймерного msg сообщений MSG; // структура сообщения пока (GetMessage(&msg, // сообщение структурная НЕДЕЙСТВИТЕЛЬНАЯ, // ручка окна, чтобы получать сообщение НЕДЕЙСТВИТЕЛЬНОЕ, // самое низкое сообщение, чтобы изучать НЕДЕЙСТВИТЕЛЬНЫЙ)) // самое верхнее сообщение, чтобы изучаться { // Пошлите сообщения WM_TIMER в процедуру hwndTimer. если (msg.message == WM_TIMER) {
msg.hwnd = hwndTimer; } TranslateMessage(&msg); // переводится виртуальный-ключевой кодировать DispatchMessage(&msg); // сообщение отправок в окно }
|
|
|
|
| |