DI_USERCONTROL

Programming Far Manager plugins

DI_USERCONTROL

Свобода выбора! Элемент диалога DI_USERCONTROL описывает элемент управления, определяемый программистом: отрисовка, реагирование на события и прочие операции с элементом - всё это возлагается "на хрупкие плечи" плагина.
struct FarDialogItem
{
  enum FARDIALOGITEMTYPES Type = DI_USERCONTROL
  intptr_t X1                  = X1
  intptr_t Y1                  = Y1
  intptr_t X2                  = X2
  intptr_t Y2                  = Y2
  struct FAR_CHAR_INFO *VBuf   = виртуальный буфер отрисовки
  FARDIALOGITEMFLAGS Flags     = Flags
  const wchar_t *Data          = User Defined
};

Внимание! Внимание!

  • Приведено схематичное изображение структуры; полное описание структуры см. здесь.

Виртуальный буфер отрисовки

Параметр VBuf задаёт адрес виртуального буфера типа FAR_CHAR_INFO.

Если значение VBuf = NULL, то это значит, что плагин сам должен отрисовывать элемент DI_USERCONTROL после прихода события DN_DRAWDLGITEM, используя сервисную функцию Text.

Если VBuf != NULL, то Менеджер Диалогов считает, что это адрес буфера типа FAR_CHAR_INFO. Здесь обработчик диалога, в ответ на событие DN_DRAWDLGITEM, должен отрисовать этот элемент в виртуальный буфер, после чего Менеджер Диалогов выдаст содержимое VBuf на экран.

Флаги

Для элемента DI_USERCONTROL имеют значения следующие флаги:
ФлагОписание
DIF_NOFOCUS управляющий элемент не получает клавиатурный фокус ввода
DIF_DISABLE элемент является недоступным

События

СобытиеОписание
DN_DRAWDLGITEM начало отрисовки элемента
DN_CONTROLINPUT нажали клавиатурную клавишу или кликнули клавишей мыши
DN_KILLFOCUS элемент потерял фокус (при условии, что не используется флаг DIF_NOFOCUS)
DN_GOTFOCUS элемент получил фокус (при условии, что не используется флаг DIF_NOFOCUS)

Замечания

  1. Замечания по работе с курсором см. в описании сообщений DM_GETCURSORPOS или DM_SETCURSORPOS.
Смотрите также: