Приложения
Приложение А. Функции, константы и структуры RDS
А.2. События блока и связанные с ними описания
А.2.6. События пользовательского интерфейса и рисования внешнего вида блоков
А.2.6.24. RDS_BFM_WINREFRESH – обновление окон блока
Поток, в котором вызывается функция модели
Главный поток RDS.
Первый параметр функции модели (int CallMode)
Константа RDS_BFM_WINREFRESH.
Третий параметр функции модели (void *ExtParam)
Указатель на структуру описания события RDS_WINREFRESHDATA.
Возвращаемое функцией модели значение
Не используется, можно возвращать любое значение.
Примечания
Реакция на событие RDS_BFM_WINREFRESH вызывается у подсистемы или блока при необходимости обновить принадлежащие им окна по таймеру, команде от пользователя или другого блока. Действия по обновлению стандартных окон подсистем производятся автоматически, в их модели не обязательно добавлять реакцию на это событие. Если же блоку или подсистеме принадлежат какие-либо немодальные окна, открытые моделью самостоятельно, процедурой их обновления должна заниматься модель. Следует помнить, что при работе с немодальными окнами в RDS необходимо блокировать данные, как описывается в §1.8 руководства программиста.
В параметре ExtParam передается указатель на структуру RDS_WINREFRESHDATA, описывающую событие:
typedef struct { RDS_TIMERID Timer; // Таймер, вызвавший обновление, или NULL double Delay; // Возвращаемое время обновления окна, мс } RDS_WINREFRESHDATA; typedef RDS_WINREFRESHDATA *RDS_PWINREFRESHDATA;
Поля структуры
- Timer (RDS_TIMERID)
- Идентификатор сработавшего таймера, созданного с флагом RDS_TIMERS_WINREF (такие таймеры служат для обновления окон) или NULL, если обновление окна вызвано не таймером, а сервисной функцией или командой пользователя.
- Delay (double)
- Возвращаемое моделью полное время обновления окна в миллисекундах. Исходно в этом поле находится значение −1. Модель может не вычислять это время и оставить в поле отрицательное значение, в этом случае RDS вычислит время обновления окна по задержке между вызовом модели и возвратом из нее. Времена обновления окон используются в адаптивном алгоритме вычисления частоты обновления для недопущения слишком больших потерь времени на обновление при высокой загрузке процессора.
См. также
rdsRefreshBlockWindows, rdsSetBlockTimer, RDS_TIMERDESCRIPTION.