struct FarDialogItem
{
int Type = DI_COMBOBOX
int X1 = X1
int Y1 = Y
int X2 = X2
int Y2 = Y (равен значению Y1)
int Focus = Focus
union {
FarList *ListItems = ListItems [передается]
int ListPos = ListPos [возвращается]
};
DWORD Flags = Flags
int DefaultButton = DefaultButton
union {
char Data[512]; = редактируемый текст (без флага DIF_VAREDIT)
struct {
DWORD PtrFlags; = дополнительные флаги (в Dialog API 1.0 не используется)
int PtrLength; = размер данных, на которые указывает PtrData
char *PtrData; = указатель на пользовательский буфер редактирования
char PtrTail[1];= "остаток" - доступ к оставшейся части Data
} Ptr; = редактируемый текст (с флагом DIF_VAREDIT)
};
};
Внимание!
Указатель на структуру FarList, описывающую пункты для начальной инициализации комбинированного списка. Редактируемое поле заполняется значением первого пункта списка с установленным флагом LIF_SELECTED при условии, что Data не содержит "редактируемый текст" и есть хотя бы один элемент списка с таким флагом. Если таких пунктов несколько, берется первый.
Если значение = NULL, то список выводится не будет.
Текущая позиция в списке ListItems.Items. После закрытия диалога это поле содержит позицию выбранного пользователем элемента списка.
| Флаг | Описание |
|---|---|
| DIF_DROPDOWNLIST | Стиль нередактируемого раскрывающегося списка - DropDownList. |
| DIF_EDITEXPAND | "Расширять" переменные среды. |
| DIF_LISTAUTOHIGHLIGHT | Горячие клавиши будут назначены автоматически. |
| DIF_LISTNOAMPERSAND | показывать горячие клавиши в списке. |
| DIF_LISTWRAPMODE | "Заворачивает" список при навигации по списку. |
| DIF_DISABLE | Элемент является недоступным. |
| DIF_READONLY | Переводит строки редактирования в состояние "только для чтения" |
| DIF_SELECTONENTRY | Выделить редактируемый текст при получении фокуса ввода. |
| DIF_NOFOCUS | Управляющий элемент не получает клавиатурный фокус ввода. |
| DIF_VAREDIT | Использовать указатель на собственный буфер редактирования (FarDialogItem.Ptr.*) вместо FarDialogItem.Data. |
| Событие | Описание |
|---|---|
| DN_DRAWDLGITEM | начало отрисовки текстовой строки |
| DN_CTLCOLORDLGITEM | запрос цветовых атрибутов для отрисовки строки редактирования
комбинированного списка; Param2:
LoWord LoByte - редактируемый текст
(COL_WARNDIALOGEDIT или
COL_DIALOGEDIT)
LoWord HiByte - выделенный текст
(COL_DIALOGEDITSELECTED)
HiWord LoByte - неизмененный текст (UnChanched)
(COL_DIALOGEDITUNCHANGED)
HiWord HiByte - цвет символа для вызова списка
(COL_DIALOGTEXT)
Param2 (при флаге DIF_DROPDOWNLIST):
LoWord LoByte - редактируемый текст
(COL_WARNDIALOGEDIT или
COL_DIALOGEDIT)
LoWord HiByte - выделенный текст
(COL_DIALOGEDIT
элемент в фокусе
COL_DIALOGEDITSELECTED)
HiWord LoByte - неизмененный текст (UnChanched)
(COL_WARNDIALOGEDIT или
COL_DIALOGEDIT)
HiWord HiByte - цвет символа для вызова списка
(COL_DIALOGTEXT)
|
| DN_CTLCOLORDLGLIST | запрос цветовых атрибутов перед отрисовкой открытого комбинированного списка. |
| DN_KEY | нажали клавишу. |
| DN_MOUSECLICK | "кликнули" клавишей мыши |
| DN_EDITCHANGE | текст изменен |
| DN_KILLFOCUS | элемент потерял фокус (при условии, что не используется флаг DIF_NOFOCUS). |
| DN_GOTFOCUS | элемент получил фокус (при условии, что не используется флаг DIF_NOFOCUS). |