Текущий раздел:

Описания RDS

Приложения

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

А.2. События блока и связанные с ними описания

А.2.6. События пользовательского интерфейса и рисования внешнего вида блоков

А.2.6.2. RDS_BFM_CONTEXTPOPUP – вызов контекстного меню блока

# Приложения

## Приложение А. Функции, константы и структуры 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.