DialogAPI выделен в отдельное API, для максимального контроля над созданным диалогом.
Менеджер диалогов поддерживает только так называемые Модальные Диалоги (Modal Dialog).
Модальный диалог представляет собой окно, запрещающее пользователю взаимодействовать с любым
объектом FAR Manager вне данного диалога. Модальный диалог отсекает поток
сообщений, идущих от мыши или клавиатуры к другим объектам FAR Manager.
Плагин полностью управляет поведением диалога:
- диалог имеет функцию-обработчик, которая реагирует на массу событий,
приходящих от Менеджера диалогов;
- функция-обработчик общается с Менеджером Диалогов путём посылки
сообщений, используя функцию
SendDlgMessage;
- функция-обработчик может передать управление Менеджеру Диалогов используя
функцию DefDlgProc;
- окончанием обработки диалога управляет плагин.
Если в обработчике диалога просто передать управление ядру посредством
функции
DefDlgProc, то получим... простой, неуправляемый диалог
(такие же диалоги можно получить при вызове функции
DialogInit с параметром
DlgProc, равным NULL):
// минимальный обработчик диалога
intptr_t WINAPI MyDlgProc(HANDLE hDlg, intptr_t Msg, intptr_t Param1, void *Param2)
{
return Info.DefDlgProc(hDlg,Msg,Param1,Param2);
}
Итак. Dialog API: