Приложения
Приложение А. Функции, константы и структуры RDS
А.5. Сервисные функции и макросы RDS
А.5.13. Вызов функций блоков
А.5.13.6. rdsBroadcastFunctionCallsEx – прямой вызов функции всех блоков подсистемы
Функция rdsBroadcastFunctionCallsEx вызывает одну и ту же функцию у всех блоков указанной подсистемы (с блоками вложенных подсистем или без них). Управление возвращается модели вызвавшего блока только после вызова всех функций.
int RDSCALL rdsBroadcastFunctionCallsEx( RDS_BHANDLE Parent, // Подсистема с вызываемыми блоками int FuncId, // Идентификатор функции LPVOID pParams, // Указатель на область параметров функции DWORD Flags // Флаги (RDS_BCALL_*) );
Тип указателя на эту функцию
RDS_IBhIpVDw
Параметры
- Parent (RDS_BHANDLE)
- Идентификатор подсистемы, у блоков которой будет вызываться функция (модели этих блоков будут реагировать на событие RDS_BFM_FUNCTIONCALL).
- FuncId (int)
- Целый идентификатор вызываемой функции, полученный при ее регистрации вызовом rdsRegisterFunction.
- pParams (LPVOID)
- Указатель на область параметров функции (этот указатель передается модели вызванного блока). Может равняться NULL.
- Flags (DWORD)
- Один или несколько объединенных битовым ИЛИ флагов, управляющих вызовом функции:
RDS_BCALL_ALLOWSTOP Разрешить вызываемым моделям блоков прекращать дальнейшие вызовы присвоением значения TRUE полю Stop структуры RDS_FUNCTIONCALLDATA. RDS_BCALL_CHECKSUPPORT Перед вызовом проверить поддержку этой функции блоком, вызвав его модель для реакции на событие RDS_BFM_CHECKFUNCSUPPORT. В настоящее время этот режим практически не используется. RDS_BCALL_SUBSYSTEMS Вызывать функции у всех блоков внутри подсистемы Parent на всех уровнях иерархии (то есть не только у блоков и подсистем, непосредственно находящихся в Parent, но и у всех внутренних блоков этих подсистем).
Возвращаемое значение
Общее число блоков, модели которых были вызваны в процессе выполнения функции.
Примечания
Вызов этой функции приводит к последовательному (в произвольном порядке) вызову всех моделей блоков в подсистеме Parent для реакции на событие RDS_BFM_FUNCTIONCALL. Поля структуры данных функции RDS_FUNCTIONCALLDATA, указатель на которую передается в модель блока в параметре ExtParam, при этом будут заполнены следующим образом:
| Поле | Значение |
|---|---|
| int Function | значение параметра FuncId |
| LPVOID Data | значение параметра pParams |
| RDS_BHANDLE Caller | идентификатор блока, из модели которого вызвана rdsBroadcastFunctionCalls |
| BOOL Broadcast | TRUE |
| int BroadcastCnt | исходно – 0, увеличивается на 1 при вызове каждого следующего блока |
| BOOL Stop | исходно – FALSE, вызванная модель может присвоить TRUE, что прекратит вызов других моделей (при указании флага RDS_BCALL_ALLOWSTOP) |
| BOOL Delayed | FALSE |
| DWORD DataBufSize | 0 |
Модели блоков, находящихся в Parent, будут вызываться до тех пор, пока не будут вызваны все, или пока какая-либо модель не присвоит полю Stop структуры RDS_FUNCTIONCALLDATA значение TRUE.
Пример
Пример использования функции rdsBroadcastFunctionCallsEx приведен в §2.13.3 руководства программиста.
См. также
RDS_BFM_FUNCTIONCALL, RDS_FUNCTIONCALLDATA, rdsBroadcastFuncCallsDelayed, rdsRegisterFunction.