На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

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); // сообщение отправок в окно
}



Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz