DialogInit
Функция
DialogInit
инициализирует диалог, для последующего показа на экране функцией DialogRun.
HANDLE WINAPI DialogInit( const GUID* PluginId, const GUID* Id, intptr_t X1, intptr_t Y1, intptr_t X2, intptr_t Y2, const wchar_t *HelpTopic, const struct FarDialogItem *Item, size_t ItemsNumber, intptr_t Reserved, FARDIALOGFLAGS Flags, FARWINDOWPROC DlgProc, void *Param );
Параметры
PluginId
Указатель на GUID плагина (для вашего плагина, GUID должен быть таким же, что и в поле
GlobalInfo.Guid
функции GetGlobalInfoW).Id
Указатель на GUID диалога. GUID должен быть уникальным.
X1, Y1, X2, Y2
Геометрия диалога. Задайте эти координаты непосредственно или воспользуйтесь формулой
"Width x Height"
- для этого установите X1
и Y1
в -1
, при этом
X2
- ширина и Y2
- высота диалога. В последнем случае при выводе на экран диалог будет автоматически центрироваться. Параметры X2
и Y2
не могут быть меньше нуля.HelpTopic
Тема подсказки связанная с данным диалогом. Если подсказка не используется, то установите этот параметр в
NULL
.Item
Указатель на массив структур FarDialogItem. Каждая структура описывает пункт диалога.
ItemsNumber
Количество элементов массива
FarDialogItem
.Reserved
Зарезервировано. Должно быть рано
0
.Flags
Набор флагов, уточняющих некоторые параметры диалога. Может быть комбинацией следующих значений (тип FARDIALOGFLAGS):
Флаг | Описание |
---|---|
FDLG_WARNING | Задаёт для диалога цветовую схему "Предупреждение". |
FDLG_SMALLDIALOG | Позволяет создавать диалоги с уменьшенным размером рамки. Для таких диалогов при отрисовке разделительных линий (DIF_SEPARATOR ) предполагается
нулевой отступ между границей диалога и окружающей его двойной рамкой. |
FDLG_NODRAWSHADOW | Не рисовать тень диалога. |
FDLG_NODRAWPANEL | Не рисовать поле диалога. |
FDLG_KEEPCONSOLETITLE | Отключить установку заголовка консоли Far Manager по заголовку диалога. |
FDLG_NONMODAL | Создать немодальный диалог. Диалог отображается сразу и сам освобождается при закрытии. Вызывать DialogRun и DialogFree для такого диалога не нужно. |
FDLG_NONE | Нулевой флаг. |
DlgProc
Указатель на функцию-обработчик диалогового окна типа FARWINDOWPROC.
Param
Данные, которые обработчик диалога получит в сообщении DN_INITDIALOG
Возвращаемое значение
Функция возвращает созданный описатель диалога, либо
После закрытия диалога и получения нужных данных, созданный описатель диалога необходимо освободить в функции DialogFree.
INVALID_HANDLE_VALUE
в случае ошибки. После закрытия диалога и получения нужных данных, созданный описатель диалога необходимо освободить в функции DialogFree.
Замечания
- Массив элементов
Item
не корректируется в процессе работы пользователя с этим диалогом, он необходим только для построения самого диалога. Far Manager перед созданием диалога преобразует элементыItem
во внутреннее представление.
Пример
// {B66C436D-E657-419C-86D3-6834B9ACF3D2} DEFINE_GUID(MainGuid, 0xb66c436d, 0xe657, 0x419c, 0x86, 0xd3, 0x68, 0x34, 0xb9, 0xac, 0xf3, 0xd2); // {F6BFA9FC-B2B9-4354-AE47-8FECF59FE65F} DEFINE_GUID(DialogGuid, 0xf6bfa9fc, 0xb2b9, 0x4354, 0xae, 0x47, 0x8f, 0xec, 0xf5, 0x9f, 0xe6, 0x5f); HANDLE hDlg = Info.DialogInit(&MainGuid;,&DialogGuid;, -1,-1,76,10, L"TempCfg",DialogItems,sizeof(DialogItems)/sizeof(DialogItems[0]), 0,0,DlgProc,0); if (hDlg != INVALID_HANDLE_VALUE) { int ExitCode=Info.DialogRun(hDlg); if (ExitCode == 1) // вышли по Ок { // различные вызовы Info.SendDlgMessage() для получения нужных выходных данных из диалога } Info.DialogFree(hDlg); if (ExitCode == 1) return(TRUE); } return(FALSE);
Смотрите также: