# Dialog API

Краткое описание Dialog API

### Экспортируемые функции, т.е. те, которые плагин экспортирует для Far Manager

Функция | Описание
--- | ---
ProcessDialogEventW | обработка событий диалога

### Сервисные функции, указатели на эти функции плагины получают от Far Manager в функции SetStartupInfoW

Функция | Описание
--- | ---
DefDlgProc | вызов стандартной функции обработки диалога
DialogFree | освобождает память, выделенную под внутренние структуры диалога функцией DialogInit
DialogInit | создаёт (инициализирует) диалог
DialogRun | показывает диалог созданный функцией DialogInit
SendDlgMessage | посылка сообщения функции обработки диалога

### Пользовательская функция обработки диалога

Функция | Описание
--- | ---
DlgProc | шаблон функции обработки диалога, используется в DialogInit

### Структуры

Структура | Описание
--- | ---
DialogInfo | информация о диалоге
FarDialogEvent | информация о событии диалога
FarDialogItem | элемент диалога
FarDialogItemColors | изменение цветовых атрибутов элементов диалога
FarDialogItemData | передача данных элементу диалога
FarGetDialogItem | запрос элемента диалога
FarList | список DI_LISTBOX
FarListDelete | параметры удаления элементов из DI_COMBOBOX и DI_LISTBOX
FarListFind | поиск элемента из DI_COMBOBOX и DI_LISTBOX
FarListGetItem | получение одного элемента списка из DI_COMBOBOX и DI_LISTBOX
FarListInfo | получить информацию о списках DI_COMBOBOX и DI_LISTBOX
FarListInsert | вставка элемента в DI_COMBOBOX и DI_LISTBOX
FarListItem | элемент списка
FarListItemData | ассоциация данных с элементом списка
FarListPos | позиционирование в списке
FarListTitles | установка/получение заголовков для списка
FarListUpdate | данные для обновления элемента списка
OpenDlgPluginData | информация о вызванном плагине из диалога
ProcessDialogEventInfo | информацию о событии диалога

### Элементы диалога

Элемент | Описание
--- | ---
DI_BUTTON | кнопка (Push Button)
DI_CHECKBOX | контрольный переключатель (Check Box)
DI_COMBOBOX | комбинированный список
DI_DOUBLEBOX | двойная рамка
DI_EDIT | поле ввода
DI_FIXEDIT | поле ввода фиксированного размера
DI_LISTBOX | окно списка
DI_PSWEDIT | поле ввода пароля
DI_RADIOBUTTON | селекторная кнопка (Radio Button)
DI_SINGLEBOX | одиночная рамка
DI_TEXT | текстовая строка
DI_USERCONTROL | элемент управления, определяемый программистом
DI_VTEXT | вертикальная текстовая строка

### Флаги элементов диалога

Флаг | Описание
--- | ---
DIF_3STATE | элемент DI_CHECKBOX будет иметь 3 состояния
DIF_BOXCOLOR | текст элемента будет иметь цвет рамок
DIF_BTNNOCLOSE | для кнопки - не завершать диалог
DIF_CENTERGROUP | центрирование группы элементов
DIF_CENTERTEXT | центрирование текста в статических элементах
DIF_DEFAULTBUTTON | элемент является "элементом по умолчанию"
DIF_DISABLE | элемент является недоступным
DIF_DROPDOWNLIST | задаёт стиль не редактируемого списка
DIF_EDITEXPAND | "расширение" переменных среды в строках ввода
DIF_EDITOR | последовательно определённые поля ввода
DIF_EDITPATH | строка ввода будет содержать имена реальных файловых объектов
DIF_EDITPATHEXEC | ограничивает автодополнение только исполнимыми файлами
DIF_FOCUS | элемент получает клавиатурный фокус ввода
DIF_GROUP | группировка RadioButtons
DIF_HIDDEN | элемент диалога не виден
DIF_HISTORY | позволяет вести историю редактирования для поля ввода
DIF_LEFTTEXT | выравнивать заголовки рамок по левому краю
DIF_LISTAUTOHIGHLIGHT | автоматическое назначение горячих клавиш в списке
DIF_LISTNOAMPERSAND | позволяет показывать горячие клавиши в списке
DIF_LISTNOBOX | показывать список без рамки
DIF_LISTNOCLOSE | не закрывать диалог при выборе элемента из списка
DIF_LISTTRACKMOUSE | реагировать на движение мыши в списке
DIF_LISTTRACKMOUSEINFOCUS | реагировать на движение мыши в списке только если элемент находится в фокусе
DIF_LISTWRAPMODE | "заворачивает" список при навигации по списку
DIF_MANUALADDHISTORY | обработчик диалога сам будет добавлять строки в историю
DIF_MASKEDIT | задаёт маску в строках ввода
DIF_MOVESELECT | изменить выбор внутри группы radio-кнопок при изменении фокуса ввода
DIF_NOAUTOCOMPLETE | отключить автодополнение для строк редактирования
DIF_NOBRACKETS | показывает заголовок кнопки без скобок
DIF_NOFOCUS | управляющий элемент не получает клавиатурный фокус ввода
DIF_NONE | нулевой флаг
DIF_READONLY | переводит строки редактирования в состояние "только для чтения"
DIF_RIGHTTEXT | выравнивать текст по правому краю
DIF_SELECTONENTRY | при получении фокуса ввода содержимое строки редактирования будет выделяться
DIF_SEPARATOR | текстовая строка отображается как разделитель диалога (одинарная горизонтальная линия)
DIF_SEPARATOR2 | текстовая строка отображается как разделитель диалога (двойная горизонтальная линия)
DIF_SEPARATORUSER | текстовая строка отображается как разделитель диалога (формат линии задается плагином)
DIF_SETSHIELD | размещает на кнопке аналог "иконки со щитом" Microsoft UAC
DIF_SHOWAMPERSAND | показывать в текстовой строке амперсанд не используя его для определения горячей клавиши
DIF_USELASTHISTORY | начальное значение берётся из истории
DIF_WORDWRAP | усекает очередное слово, если оно не вмещается по ширине элемента

### События

Событие | Описание
--- | ---
DN_BTNCLICK | изменилось состояние кнопок
| DN_CLOSE | сигнал о закрытии диалога
DN_CONTROLINPUT | пользователь нажал клавишу или кликнул клавишей мыши
DN_CTLCOLORDIALOG | запрос цвета на прорисовку подложки окна диалога
DN_CTLCOLORDLGITEM | запрос цвета для конкретного элемента диалога
DN_CTLCOLORDLGLIST | запрос цвета на отрисовку списка
DN_DRAGGED | информация о перемещениях диалога
DN_DRAWDIALOG | перед прорисовкой всего диалога
DN_DRAWDIALOGDONE | прорисовка диалога закончена
DN_DRAWDLGITEM | перед отрисовкой элемента диалога
DN_DRAWDLGITEMDONE | после отрисовки элемента диалога
DN_DROPDOWNOPENED | изменение состояние combobox и history (открыт/закрыт)
DN_EDITCHANGE | изменение состояния элемента редактирования
DN_GETVALUE | запрос на изменение информации для макросов
DN_GOTFOCUS | элемент диалога получил клавиатурный фокус ввода
DN_HELP | вывод темы помощи
DN_HOTKEY | пользователь нажал Alt-буква
DN_INITDIALOG | инициализация диалога
DN_INPUT | возможность перехватить сообщение мыши до его обработки ядром
DN_KILLFOCUS | перед потерей клавиатурного фокуса элементом диалога
DN_LISTCHANGE | изменение состояния элемента списка
DN_LISTHOTKEY | выбор элемента списка с помощью горячей клавиши
DN_RESIZECONSOLE | нотификационное сообщение "Изменились размеры консоли"

### Сообщения

Сообщение | Описание
--- | ---
DM_ADDHISTORY | добавить строку в историю
DM_CLOSE | сигнал на закрытие диалога
DM_EDITUNCHANGEDFLAG | управление состоянием "неизмененный текст" строки редактирования
DM_ENABLE | переключение/получение состояния Enable/Disable элемента
DM_ENABLEREDRAW | отключение/включение перерисовки всего диалога
DM_GETCHECK | получить состояние элементов DI_CHECKBOX и DI_RADIOBUTTON
DM_GETCOMBOBOXEVENT | получить состояние посылки событий для открытого combo box
DM_GETCONSTTEXTPTR | получить указатель на внутренний буфер Far Manager, содержащий строку ввода
DM_GETCURSORPOS | получить позицию курсора
DM_GETCURSORSIZE | получить размеры курсора
DM_GETDIALOGINFO | получить информацию о диалоге Far Manager или другого плагина
DM_GETDIALOGTITLE | получить заголовок диалога
DM_GETDLGDATA | получить данные, ассоциированные с диалогом
DM_GETDLGITEM | получение полной информации о элементе
DM_GETDLGITEMSHORT | получение информации о элементе
DM_GETDLGRECT | получить координаты диалогового окна
DM_GETDROPDOWNOPENED | определить - есть ли в диалоге раскрытый комбобокс или история
DM_GETEDITPOSITION | получить позицию курсора в строках ввода
DM_GETFOCUS | получить индекс элемента, имеющего фокус ввода
DM_GETITEMDATA | получить данные, ассоциированные с элементом диалога
DM_GETITEMPOSITION | получить позицию и размер элемента
DM_GETSELECTION | получить параметры выделения в строках редактирования диалога
DM_GETTEXT | получение строки ввода или заголовка элементов
DM_KEY | передать массив клавиш обработчику диалога
DM_LISTADD | добавить в список новый элемент
DM_LISTADDSTR | добавить в список строку
DM_LISTDELETE | удалить элементы списка
DM_LISTFINDSTRING | найти элемент списка
DM_LISTGETCURPOS | получить текущую позицию в списке
DM_LISTGETDATA | получить данные, ассоциированные с элементом списка
DM_LISTGETDATASIZE | получить размер данных, ассоциированных с элементом списка
DM_LISTGETITEM | получить один элемент списка
DM_LISTGETTITLES | получить заголовки списка
DM_LISTINFO | получить информацию о списке
DM_LISTINSERT | вставить элемент в список
DM_LISTSET | добавление элементов в список с удалением предыдущих элементов
DM_LISTSETCURPOS | установить позицию в списке
DM_LISTSETDATA | установить данные, ассоциированные с элементом списка
DM_LISTSETTITLES | установить заголовки списка
DM_LISTSORT | сортировать элементы списка
DM_LISTUPDATE | обновить элемент в списке
DM_MOVEDIALOG | переместить диалог
DM_REDRAW | перерисовать весь диалог
DM_RESIZEDIALOG | изменить размеры диалога
DM_SET3STATE | изменить стиль DI_CHECKBOX
DM_SETCHECK | установить состояние элементов DI_CHECKBOX и DI_RADIOBUTTON
DM_SETCOMBOBOXEVENT | включить или отключить посылку сообщений DN_INPUT или DN_CONTROLINPUT для открытого combo box
DM_SETCURSORPOS | позиционировать курсор
DM_SETCURSORSIZE | установить размер курсора
DM_SETDLGDATA | ассоциировать данные с диалогом
DM_SETDLGITEM | для изменения информации о заданном элементе
DM_SETDLGITEMSHORT | для изменения информации о заданном элементе
DM_SETDROPDOWNOPENED | программное раскрытие/закрытие комбобокса или истории
DM_SETEDITPOSITION | управление позицией курсора в строках ввода
DM_SETFOCUS | устанавливает клавиатурный фокус на заданный элемент диалога
DM_SETHISTORY | управление наличием истории.
DM_SETINPUTNOTIFY | управление первичным событием мыши
DM_SETITEMDATA | ассоциировать данные с элементом диалога
DM_SETITEMPOSITION | изменить позицию элемента
DM_SETMAXTEXTLENGTH | задать максимальный размер редактируемой строки или заголовка элемента
DM_SETSELECTION | выделить блок в строках редактирования диалога
DM_SETTEXT | установить строку ввода или заголовок элемента
DM_SETTEXTPTR | установить строку ввода или заголовок элемента
DM_SHOWDIALOG | показать/спрятать диалоговое окно
DM_SHOWITEM | показать/спрятать элемент диалога
DM_USER | отправная точка для пользовательских сообщений

Смотрите также:
Типы и определения