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

Приложения

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

А.3. События модуля автокомпиляции и связанные с ними структуры

А.3.4. События модуля автокомпиляции

А.3.4.8. RDS_COMPM_EXECFUNCTION – реакция на действия пользователя

Первый параметр функции модуля (int CallMode)

Константа RDS_COMPM_EXECFUNCTION.

Третий параметр функции модуля (void *ExtParam)

Указатель на структуру RDS_COMPEXECFUNCDATA, содержащую команду пользователя и дополнительные данные.

Возвращаемое функцией модуля значение

RDS_COMPR_DONE Команда пользователя выполнена.
RDS_COMPR_ERROR При выполнении команды возникли ошибки.

Примечания

Событие RDS_COMPM_EXECFUNCTION возникает при различных действиях пользователя на вкладке «Компиляция» окна параметров блока. На момент этого события модель может быть еще не подключена к блоку, и действия пользователя, вызвавшие это событие, могут быть направлены на подключение новой модели. Эта реакция вызывается при нажатии пользователем кнопок «Обзор», «Сохранить как» и т.п., в результате функция модуля может вернуть в RDS измененное имя модели вызовом rdscompReturnModelName.

В параметре ExtParam при реакции на событие RDS_COMPM_EXECFUNCTION передается указатель на структуру RDS_COMPEXECFUNCDATA:

  typedef struct {
     Function;     // Действие (RDS_COMPFLAG_FUNC*)
     ModelNameA;    // Содержимое строки имени модели (UTF8)
     ModelNameW;   // Содержимое строки имени модели (UTF16)
    // ModelName;  // Содержимое строки имени модели ()
    // Следующие параметры могут не иметь смысла для некоторых функций
     BlockVars; // Переменные блока
     BlockType;    // Тип блока (RDS_BT* или RDS_TUNKNOWN)
  } RDS_COMPEXECFUNCDATA;
  typedef RDS_COMPEXECFUNCDATA *RDS_PCOMPEXECFUNCDATA;

Поля структуры

Function (RDSINT32)
Одна из констант, описывающих действие, совершенное пользователем (они частично совпадают с флагами, возвращаемыми функцией модуля при реакции на событие RDS_COMPM_GETOPTIONS):
RDS_COMPFLAG_FUNCMODELBROWSE Пользователь нажал кнопку «Обзор…»
RDS_COMPFLAG_FUNCMODELCREATE Пользователь нажал кнопку «Новый…»
RDS_COMPFLAG_FUNCMODELSAVEAS Пользователь нажал кнопку «Сохранить как…»
RDS_COMPFLAG_FUNCMODELUSERINPUT Пользователь ввел текст имени модели вручную (вызывается в момент закрытия окна параметров блока кнопкой «OK».
ModelNameA (RDSCSTR), ModelNameW (RDSWCSTR), ModelName (RDSXCSTR)
Указатель на строку с именем модели на вкладке «Компиляция» окна параметров блока. Это текст во внутренней памяти RDS, функция модуля не может изменять его значение. Если в результате реакции необходимо изменить этот текст (например, если пользователь выбрал новое имя модели кнопкой «Обзор»), необходимо вызвать сервисную функцию rdscompReturnModelName.
BlockVars (RDS_HOBJECT)
Вспомогательный объект, содержащий структуру переменных текущего блока. Это поле может использоваться только в реакции на нажатие кнопки «Новый», то есть при Function==RDS_COMPFLAG_FUNCMODELCREATE).
BlockType ()
Тип блока, в окне параметров которого производятся действия:
RDS_BTSYSTEM Подсистема.
RDS_BTSIMPLEBLOCK Простой блок.
RDS_BTINPUTBLOCK Внешний вход.
RDS_BTOUTPUTBLOCK Внешний выход.
RDS_BTBUSPORT Ввод шины.

Для всех действий, кроме ввода имени модели вручную (RDS_COMPFLAG_FUNCMODELUSERINPUT), функция модуля вызывается немедленно при нажатии пользователем соответствующей кнопки. При ручном редактировании строки имени модели этот факт запоминается, а затем функция модуля вызывается при закрытии окна параметров блока кнопкой «OK» – в этот момент модуль может проверить, есть ли модель с введенным вручную именем, и создать ее, если это необходимо.

Пример

Пример реакции на это событие приведен в §3.3 руководства программиста.

См. также

RDS_COMPM_GETOPTIONS, RDS_BLOCKDESCRIPTION, rdscompReturnModelName.


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