Описание пользователя
Глава 3. Использование стандартных модулей автокомпиляции
§3.7. Краткий перечень вводимых в модель описаний и реакций на события
§3.7.8. Реакции окна подсистемы
Рассматриваются реакции на события, связанные с окнами подсистем.
§3.7.8.1. Действия с окном подсистемы
Это событие возникает в подсистеме и во всех блоках, находящихся непосредственно внутри нее, при открытии и закрытии окна этой подсистемы. Блоки, находящиеся внутри подсистем этой подсистемы (то есть блоки, не имеющие отношения к открытому или закрытому окну), информации об этом событии не получают. Реакцию на него можно использовать, например, для того, чтобы, зная дескриптор только что открытого окна подсистемы, выполнить с ним какие-либо нестандартные действия. Текст этой реакции вводится на вкладке «» левой панели редактора модели: раздел «», подраздел «».
В классе блока для события действий с окном подсистемы создается функция с именем rdsbcppSysWinOperation следующего вида:
// Subsystem window actions
void rdsbcppBlockClass::rdsbcppSysWinOperation(
RDS_PWINOPERATIONDATA OperationData)
{
… пользовательский текст реакции …
}
Параметр функции OperationData – это указатель на структуру описания события RDS_WINOPERATIONDATA:
typedef struct {
int Operation; // Операция с окном
HWND Handle; // Дескриптор окна
BOOL EditMode; // Включен режим редактирования
BOOL Running; // Идет расчет
BOOL OwnWindow; // Операция с окном данной подсистемы
} RDS_WINOPERATIONDATA;
typedef RDS_WINOPERATIONDATA *RDS_PWINOPERATIONDATA;
Поля структуры имеют следующий смысл:
- Operation (int)
- Константа RDS_SWO_OPEN, если окно открылось, и RDS_SWO_CLOSE, если оно закрылось.
- Handle (HWND)
- Дескриптор окна подсистемы (его можно использовать в вызовах Windows API).
- EditMode (BOOL)
- TRUE, если RDS находится в режиме редактирования, и FALSE в противном случае (для режимов моделирования и расчета).
- Running (BOOL)
- TRUE, если RDS находится в режиме расчета (то есть работает поток расчета), и FALSE в противном случае (для режимов редактирования и моделирования).
- OwnWindow (BOOL)
- TRUE, если было открыто или закрыто окно подсистемы, модель которой вызывается (автокомпилируемые модели подсистем используются крайне редко), и FALSE, если открыто или закрыто окно подсистемы, родительской по отношению к вызываемому блоку.
При написании моделей блоков без использования модуля автокомпиляции действиям с окном подсистемы соответствует константа RDS RDS_BFM_WINDOWOPERATION.