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) |
Замечания
- Замечания по работе с курсором см. в описании сообщений DM_GETCURSORPOS или DM_SETCURSORPOS.
Смотрите также: