Приложения
Приложение А. Функции, константы и структуры RDS
А.2. События блока и связанные с ними описания
А.2.6. События пользовательского интерфейса и рисования внешнего вида блоков
А.2.6.2. RDS_BFM_CONTEXTPOPUP – вызов контекстного меню блока
Поток, в котором вызывается функция модели
Главный поток RDS.
Первый параметр функции модели (int CallMode)
Константа RDS_BFM_CONTEXTPOPUP.
Третий параметр функции модели (void *ExtParam)
Указатель на структуру описания события RDS_CONTEXTPOPUPDATA.
Возвращаемое функцией модели значение
Не используется, можно возвращать любое значение.
Примечания
Реакция на событие RDS_BFM_CONTEXTPOPUP вызывается непосредственно перед вызовом контекстного меню блока или свободного места окна подсистемы, то есть при щелчке правой кнопкой мыши на блоке или в окне, если этот щелчок не был обработан одним из блоков подсистемы или самой подсистемой. Обычно в этой реакции модель добавляет в стандартное контекстное меню свои собственные пункты или управляет видимостью или разрешенностью ранее добавленных пунктов (см. §2.12.6 руководства программиста). В третьем параметре функции модели при этом передается указатель на структуру RDS_CONTEXTPOPUPDATA:
typedef struct { BOOL EditMode; // Включен режим редактирования BOOL FreeSpace; // Щелчок на свободном месте окна } RDS_CONTEXTPOPUPDATA; typedef RDS_CONTEXTPOPUPDATA *RDS_PCONTEXTPOPUPDATA;
Поля структуры
- EditMode (BOOL)
- TRUE, если RDS в данный момент находится в режиме редактирования, и FALSE, если RDS находится в режимах моделирования или расчета. Обычно пункты контекстного меню в режиме редактирования отличаются от пунктов в двух других режимах, и модель может использовать значение этого поля для добавления в меню нужных в данный момент пунктов.
- FreeSpace (BOOL)
- FALSE, если вызвано контекстное меню самого блока, и TRUE, если контекстное меню вызвано щелчком не на изображении блока, а на свободном месте окна подсистемы. Это поле может принимать значение TRUE только в том случае, если данный блок – подсистема, и ее окно в данный момент открыто. Анализируя это значение, модель подсистемы может отличить контекстное меню, вызванное внутри ее собственного окна, от контекстного меню, вызванного в окне ее родительской подсистемы для этой подсистемы как для обычного блока.
Пример
Примеры работы с контекстным меню блока рассматриваются в §2.12.6 руководства программиста.
См. также
RDS_BFM_MENUFUNCTION, RDS_BFR_SHOWMENU, rdsRegisterContextMenuItemEx, rdsAdditionalContextMenuItemEx, rdsChangeMenuItem, rdsEnableMenuItem, rdsSetMenuItemOptions.