Приложения
Приложение А. Функции, константы и структуры RDS
А.4. Структуры RDS
А.4.16. RDS_TIMERDESCRIPTION – описание таймера
Структура RDS_TIMERDESCRIPTION используется для получения описания программируемого таймера блока. Эта структура заполняется сервисной функцией rdsGetBlockTimerDescr, пример ее использования приведен в §2.9.2 руководства программиста.
Структура используется только для получения описания таймера, изменить его параметры с ее помощью нельзя. Для изменения параметров таймеров используются специальные сервисные функции.
typedef struct { DWORD servSize; // Размер этой структуры в байтах DWORD Delay; // Задержка таймера (мс) DWORD StartTime; // Время начала отсчета (мс) BOOL On; // Таймер включен DWORD Mode; // Флаги режима } RDS_TIMERDESCRIPTION; typedef RDS_TIMERDESCRIPTION *RDS_PTIMERDESCRIPTION;
Поля структуры
- servSize (DWORD)
- Размер этой структуры в байтах. Перед вызовом любой сервисной функции, работающей с этой структурой, полю servSize необходимо присвоить значение sizeof(RDS_TIMERDESCRIPTION).
- Delay (DWORD)
- Интервал в миллисекундах перед срабатыванием таймера (между срабатываниями для циклических таймеров).
- StartTime (DWORD)
- Время начала отсчета таймера в миллисекундах. Это значение функции Windows API GetTickCount() на момент запуска таймера. Таким образом, таймер сработает тогда, когда значение GetTickCount() станет большим или равным (StartTime+Delay).
- On (BOOL)
- TRUE, если данный таймер включен, и FALSE, если выключен.
- Mode (DWORD)
- Режим работы таймера. Формируется как объединение битовым ИЛИ константы режима
(RDS_TIMERM_*), константы способа срабатывания (RDS_TIMERS_*) и флагов режима
(RDS_TIMERF_*). Константа режима может быть одной из следующих:
Константа способа срабатывания может быть одной из следующих:
RDS_TIMERM_LOOP Таймер циклический, после срабатывания он автоматически перезапускается с той же задержкой. RDS_TIMERM_STOP Таймер однократный, после срабатывания он будет остановлен. Его можно перезапустить сервисными функциями rdsSetBlockTimer или rdsRestartBlockTimer. RDS_TIMERM_DELETE Таймер однократный, после срабатывания он будет автоматически удален. На данный момент поддерживается единственный флаг режима:RDS_TIMERS_SIGNAL При срабатывании таймера у блока-владельца взводится сигнал запуска, то есть его первой сигнальной переменной присваивается значение 1. Таймер работает только в режиме расчета. RDS_TIMERS_TIMER При срабатывании таймера модель блока-владельца вызывается в потоке расчета для реакции на событие RDS_BFM_TIMER. Таймер работает только в режиме расчета. RDS_TIMERS_WINREF При срабатывании таймера модель блока-владельца вызывается в главном потоке для реакции на событие RDS_BFM_WINREFRESH. Таймер работает только в режиме расчета. RDS_TIMERS_SYSTIMER При срабатывании таймера модель блока-владельца вызывается в главном потоке для реакции на событие RDS_BFM_TIMER. Таймер работает во всех режимах. Для выделения из поля Mode трех его компонентов (режима, способа срабатывания и флагов) можно использовать следующие битовые маски:RDS_TIMERF_FIXFREQ При способе срабатывания RDS_TIMERS_WINREF к этому таймеру не будет применяться автоматическое снижение частоты при чрезмерной загрузке процессора процедурами обновления окон. При остальных способах срабатывания флаг игнорируется. RDS_TIMERMASK_M Маска режима работы. RDS_TIMERMASK_S Маска способа срабатывания. RDS_TIMERMASK_F Маска флагов.
См. также