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

Описания RDS

Описание пользователя

Глава 3. Использование стандартных модулей автокомпиляции

§3.7. Краткий перечень вводимых в модель описаний и реакций на события

§3.7.9. Внешний вид блока

§3.7.9.5. Дополнительное рисование блока

# Описание пользователя

## Глава 3. Использование стандартных модулей автокомпиляции

### §3.7. Краткий перечень вводимых в модель описаний и реакций на события

#### §3.7.9. Внешний вид блока

##### §3.7.9.5. Дополнительное рисование блока

Это событие возникает у всех блоков при перерисовке окна подсистемы, в котором эти блоки находятся. В отличие от реакции на обычное рисование блока, возникновение этого события не зависит от способа рисования, выбранного в окне параметров: оно возникнет и для блоков, рисующих свое изображение программно, и для блоков, внешний вид которых задается векторной картинкой, и для простых прямоугольников с текстом. Обычно в реакции на это событие поверх изображения блока выводится различная дополнительная информация: например, иконки, сигнализирующие о каких-либо ошибках в блоке. Для рисования в этой реакции используются функции Windows API или специальные функции рисования RDS. Пример модели с реакцией на это событие приведен в §3.6.10.

Текст реакции на событие дополнительного рисования вводится на вкладке «события» левой панели редактора модели: раздел «внешний вид блока», подраздел «дополнительное рисование блока». В классе блока для нее создается функция с именем rdsbcppDrawAdditional следующего вида:

      // Block additional draw procedure
      void rdsbcppBlockClass::rdsbcppDrawAdditional(RDS_PDRAWDATA DrawData)
      {
         … пользовательский текст реакции …
      }

Как и в функции реакции на обычное рисование, параметр DrawData – это указатель на структуру описания события RDS_DRAWDATA.

Следует учитывать, что при включенном избирательном обновлении окон подсистем (см. §2.10.2 руководства программиста) это событие может не возникать для блоков, изображаемых прямоугольником с текстом, поскольку такие блоки в этом режиме автоматически не перерисовываются. Если изображения, которые выводятся в реакции на это событие, могут изменяться в режиме расчета, при каждом таком изменении следует вызывать функцию rdsForceBlockRedraw для правильной работы избирательного обновления – в этом случае блок вместе с дополнительными изображениями будет принудительно перерисован при следующем обновлении окна по таймеру.

При написании моделей блоков без использования модуля автокомпиляции дополнительному рисованию блока соответствует константа RDS RDS_BFM_DRAWADDITIONAL.