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
Возвращаемое значение
Функция возвращает созданный описатель диалога, либо
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);
Смотрите также: