Навигация:
<< >> Оглавление Указатель

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

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

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

§3.7.8. Реакции окна подсистемы

Рассматриваются реакции на события, связанные с окнами подсистем.

§3.7.8.1. Действия с окном подсистемы

Это событие возникает в подсистеме и во всех блоках, находящихся непосредственно внутри нее, при открытии и закрытии окна этой подсистемы. Блоки, находящиеся внутри подсистем этой подсистемы (то есть блоки, не имеющие отношения к открытому или закрытому окну), информации об этом событии не получают. Реакцию на него можно использовать, например, для того, чтобы, зная дескриптор только что открытого окна подсистемы, выполнить с ним какие-либо нестандартные действия. Текст этой реакции вводится на вкладке «события» левой панели редактора модели: раздел «реакции подсистемы», подраздел «действия с окном подсистемы».

В классе блока для события действий с окном подсистемы создается функция с именем rdsbcppSysWinOperation следующего вида:

  // Subsystem window actions
  void rdsbcppBlockClass::rdsbcppSysWinOperation(
                             OperationData)
  {
     … пользовательский текст реакции … 
  }

Параметр функции OperationData – это указатель на структуру описания события RDS_WINOPERATIONDATA:

  typedef struct {
    int Operation;   // Операция с окном
     Handle;     // Дескриптор окна
     EditMode;   // Включен режим редактирования
     Running;    // Идет расчет
     OwnWindow;  // Операция с окном данной подсистемы
  } ;
  typedef  *;

Поля структуры имеют следующий смысл:

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.


<< >> Оглавление Указатель