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

Описания RDS

Приложения

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

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

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

А.2.6.9. RDS_BFM_MENUFUNCTION – выбор пользователем пункта меню

# Приложения

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

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

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

##### А.2.6.9. RDS_BFM_MENUFUNCTION – выбор пользователем пункта меню

Поток, в котором вызывается функция модели

Главный поток RDS.

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

Константа RDS_BFM_MENUFUNCTION.

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

Указатель на структуру описания события RDS_MENUFUNCDATA.

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

Не используется, можно возвращать любое значение.

Примечания

Реакция на событие RDS_BFM_MENUFUNCTION вызывается при выборе пользователем либо постоянного пункта контекстного или системного меню, зарегистрированного моделью блока, либо временного пункта контекстного меню, добавленного в него моделью при реакции на событие RDS_BFM_CONTEXTPOPUP. Постоянные пункты системного меню создаются сервисной функцией rdsRegisterMenuItem и размещаются в меню «Система | Дополнительно» главного окна RDS, с ними можно связывать «горячие клавиши» (см. §2.12.7 руководства программиста) . Постоянные пункты контекстного (то есть выводимого при щелчке правой кнопкой мыши на блоке или свободном месте окна подсистемы, см. §2.12.6 там же) меню создаются сервисными функциями rdsRegisterContextMenuItem и rdsRegisterContextMenuItemEx, временные пункты контекстного меню – сервисными функциями rdsAdditionalContextMenuItem и rdsAdditionalContextMenuItemEx. Вызывая модель блока для реакции на выбор пункта меню, RDS не делает разницы между системным и контекстным меню или между постоянными и временными пунктами – во всех случаях в модель передается константа RDS_BFM_MENUFUNCTION.

Для описания выбранного пункта меню служит структура RDS_MENUFUNCDATA:

      typedef struct {
        RDSINT32 Function; // Номер функции меню
        RDSINT32 MenuData; // Данные меню
      } RDS_MENUFUNCDATA;
      typedef RDS_MENUFUNCDATA *RDS_PMENUFUNCDATA;

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

Function(RDSINT32)
  Идентификатор пункта меню, указанный при его создании.
MenuData(RDSINT32)
  Дополнительное целое число, указанное при создании выбранного пункта меню.

Пара чисел Function / MenuData указывается при создании пункта меню и должна быть уникальной для данного блока, чтобы модель могла отличить один пункт от другого в реакции на событие RDS_BFM_MENUFUNCTION. Разные блоки могут иметь совпадающие идентификаторы пунктов меню, поскольку при выборе пункта всегда вызывается модель именно того блока, который создал этот пункт.

См. также

RDS_BFM_CONTEXTPOPUP, rdsRegisterContextMenuItem, rdsRegisterContextMenuItemEx, rdsAdditionalContextMenuItem, rdsAdditionalContextMenuItemEx, rdsRegisterMenuItem.