Текущий раздел:

Описания RDS

Приложения

Приложение А. Функции, константы и структуры RDS

А.2. События блока и связанные с ними описания

А.2.6. События пользовательского интерфейса и рисования внешнего вида блоков

А.2.6.24. RDS_BFM_WINREFRESH – обновление окон блока

# Приложения

## Приложение А. Функции, константы и структуры 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.