FarMenuItemEx

Структура FarMenuItemEx описывает один пункт меню. Массив этих структур передается в функцию Menu. Для использования структуры FarMenuItemEx необходимо установить флаг FMENU_USEEXT при вызове функции Menu.
struct FarMenuItemEx
{
  DWORD Flags;
  union {
    char  Text[128];
    const char *TextPtr;
  } Text;
  DWORD AccelKey;
  DWORD Reserved;
  DWORD_PTR UserData;
};

Элементы

Flags
Комбинация следующих значений (перечисление FARMENUFLAGS):
ФлагОписание
MIF_SELECTED Признак активности пункта меню. Только один пункт может быть активным.
MIF_CHECKED Признак отмеченного пункта меню. Перед текстом будет отображаться метка выбора.
MIF_SEPARATOR Пункт меню отображается как разделитель. В отличие от стурктуры FarMenuItem разделитель меню может содержать текст. Текст выравнивается по середине.
MIF_DISABLE Пункт меню недоступен.
MIF_USETEXTPTR Пункт меню использует компоненту Text.TextPtr.
Text.Text
Текст пункта меню.
Text.TextPtr
Указатель на текст пункта меню. Применяется совместно с флагом MIF_USETEXTPTR, если размера компоненты Text.Text не хватает или используется строка из языкового файла, например:
struct FarMenuItemEx Item;
Item.Flags=MIF_USETEXTPTR;
Item.Text.TextPtr=Info.GetMsg(Info.ModuleNumber,MFooItem);
AccelKey
Код клавиши FAR Manager для активизации пункта меню. Пример работы - в меню "Commands" нажатие клавиши Ctrl-O аналогично выбору пункта "Panels On/Off". В отличие от параметра BreakKeys функции Menu компонента AccelKey аналогична клавише быстрого доступа (HotKey).
Reserved
Зарезервировано и должно быть рано 0.
UserData
Пользовательские данные, ассоциированные с пунктом меню. FAR Manager не использует это поле.

Замечания

  1. В младшем слове Flags можно указывать код символа, который будет использоваться для отображения метки выбора. В этом случае система самостоятельно выставит флаг MIF_CHECKED для данного пункта меню.
  2. Если младшее слово Flags равно 0 и выставлен флаг MIF_CHECKED, или если младшее слово Flags равно 1, то будет отображаться стандартная метка выбора - символ с кодом 0FBh ()
  3. При использовании флага MIF_SEPARATOR без текста компонента Text.Text (или Text.TextPtr) должна быть проинициализирована в 0, например так:
    struct FarMenuItemEx Item;
    Item.Flags=MIF_SEPARATOR;
    Item.Text.Text[0]=0;
    или так:
  4. struct FarMenuItemEx Item;
    Item.Flags=MIF_SEPARATOR|MIF_USETEXTPTR;
    Item.Text.TextPtr=NULL;
Смотрите также:
структуры | FarMenuItem | TFarMenuItemEx