Приложения
Приложение А. Функции, константы и структуры 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 { RDSINT32 Function; // Действие (RDS_COMPFLAG_FUNC*) RDSCSTR ModelNameA; // Содержимое строки имени модели (UTF8) RDSWCSTR ModelNameW; // Содержимое строки имени модели (UTF16) //RDSXCSTR ModelName; // Содержимое строки имени модели (поле-псевдоним) // Следующие параметры могут не иметь смысла для некоторых функций RDS_HOBJECT BlockVars; // Переменные блока RDSINT32 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 Пользователь ввел текст имени модели вручную (вызывается в момент закрытия окна параметров блока кнопкой «». - ModelNameA (RDSCSTR), ModelNameW (RDSWCSTR), ModelName (RDSXCSTR)
- Указатель на строку с именем модели на вкладке «» окна параметров блока. Это текст во внутренней памяти RDS, функция модуля не может изменять его значение. Если в результате реакции необходимо изменить этот текст (например, если пользователь выбрал новое имя модели кнопкой «»), необходимо вызвать сервисную функцию rdscompReturnModelName.
- BlockVars (RDS_HOBJECT)
- Вспомогательный объект, содержащий структуру переменных текущего блока. Это поле может использоваться только в реакции на нажатие кнопки «», то есть при Function==RDS_COMPFLAG_FUNCMODELCREATE).
- BlockType (RDSINT32)
- Тип блока, в окне параметров которого производятся
действия:
RDS_BTSYSTEM Подсистема. RDS_BTSIMPLEBLOCK Простой блок. RDS_BTINPUTBLOCK Внешний вход. RDS_BTOUTPUTBLOCK Внешний выход. RDS_BTBUSPORT Ввод шины.
Для всех действий, кроме ввода имени модели вручную (RDS_COMPFLAG_FUNCMODELUSERINPUT), функция модуля вызывается немедленно при нажатии пользователем соответствующей кнопки. При ручном редактировании строки имени модели этот факт запоминается, а затем функция модуля вызывается при закрытии окна параметров блока кнопкой «» – в этот момент модуль может проверить, есть ли модель с введенным вручную именем, и создать ее, если это необходимо.
Пример
Пример реакции на это событие приведен в §3.3 руководства программиста.
См. также
RDS_COMPM_GETOPTIONS, RDS_BLOCKDESCRIPTION, rdscompReturnModelName.