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) |