Описание пользователя
Глава 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.