Менеджер диалогов поддерживает так называемые Модальные Диалоги (Modal Dialog). Модальный диалог представляет собой окно, запрещающее пользователю взаимодействовать с любым объектом FAR Manager вне данного диалога. Модальный диалог отсекает поток сообщений, идущих от мыши или клавиатуры к другим объектам FAR Manager.
Начинаем - инициализация структуры FarDialogItems
{
int Type;
int X1;
int Y1;
int X2;
int Y2;
int Focus;
int DefaultButton;
const wchar_t *Head;
DWORD Flags;
const wchar_t *Data;
}
|
Пример использования
|
FarDialogItem InitItems []= |
Чтобы запустить, инициализируем
HANDLE WINAPI DialogInit(
INT_PTR PluginNumber,
INT_PTR DialogNumber,
int X1,
int Y1,
int X2,
int Y2,
const wchar_t *HelpTopic,
struct FarDialogItem *Item,
unsigned int ItemsNumber,
DWORD Reserved,
DWORD Flags,
FARWINDOWPROC DlgProc,
LONG_PTR Param
);
|
Пример:
|
HANDLE hDlg = Info.DialogInit(&MainGuid, &DialogGuid, -1, -1, 40, 9, L"Contents", InitItems, ARRAYSIZE(InitItems), 0, 0, ShowDialogProc, (void *)DlgData); |
Подробно про инициализацию Но не забываем про неточности в энциклопедии
После этого запуск выглядит элементарно:
|
int ExitCode = Info.DialogRun(hDlg); |
Можно вызывать неоднократно.
Заканчиваем работу с диалогом:
|
Info.DialogFree(hDlg); |
Типичная задача:
Получить от пользователя введенную строку
|
Теперь в buff - текст(заголовок или введенный текст для DI_EDIT) из 5-го элемента диалога hDlg. DM_GETTEXT