Message
показывает сообщение.
intptr_t WINAPI Message( const GUID *PluginId, const GUID *Id, FARMESSAGEFLAGS Flags, const wchar_t *HelpTopic, const wchar_t * const *Items, size_t ItemsNumber, intptr_t ButtonsNumber );
GlobalInfo.Guid
функции GetGlobalInfoW).Флаг | Описание |
---|---|
FMSG_WARNING | Используются цвета "Предупреждения" (обычно белые буквы на красном фоне). |
FMSG_ERRORTYPE | Если тип ошибки, возвращаемый функцией GetLastError , известен Far Manager'у или Windows,
то описание ошибки будет выведено после строк, переданных плагином. |
FMSG_KEEPBACKGROUND | Не перерисовывать фон сообщения. |
FMSG_LEFTALIGN | Использовать для строк сообщения выравнивание влево (по умолчанию строки выводятся по центру). |
FMSG_ALLINONE | В этом случае аргумент Items не является массивом указателей на строки - это УКАЗАТЕЛЬ на одну
строку, в которой разделителем выводимых строк является символ '\n' .
Минимальное количество строк - 2 - заголовок и одна строка сообщения. При указании флага Для подавления вывода заголовка при использовании флага |
FMSG_MB_OK | Дополнительно выводится кнопка <Ok> |
FMSG_MB_OKCANCEL | Дополнительно выводятся кнопки <Ok> и <Cancel> |
FMSG_MB_ABORTRETRYIGNORE | Дополнительно выводятся кнопки <Abort>, <Retry> и <Ignore> |
FMSG_MB_YESNO | Дополнительно выводятся кнопки <Yes> и <No> |
FMSG_MB_YESNOCANCEL | Дополнительно выводятся кнопки <Yes>, <No> и <Cancel> |
FMSG_MB_RETRYCANCEL | Дополнительно выводятся кнопки <Retry> и <Cancel> |
FMSG_NONE | Нулевой флаг |
NULL
если подсказка не требуется.ButtonsNumber
строк - кнопки, все остальные строки принадлежат телу сообщения.Items
. Минимальное значение - 2 строки.FMSG_MB_*
параметр ButtonsNumber
игнорируется.-1
, если пользователь отменил сообщение (или системе не удалось выделить достаточно памяти для внутренних буферов),
или выбранный номер кнопки (для первой кнопки - 0
, для второй - 1
и так далее).
ButtonsNumber
равен 0
(флаги FMSG_MB_*
не используются) и выведенное сообщение больше не нужно, то плагин должен
восстановить экран, используя функцию RestoreScreen или любым другим путём.
ButtonsNumber
не равен 0
, то экран восстанавливает сам Far Manager.
Items
указан NULL
или количество элементов меньше двух.
FMSG_MB_*
параметр ButtonsNumber
игнорируется.
FMSG_ALLINONE
для корректной компиляции кода необходимо произвести явное преобразование типов:
Info.Message(&MainGUID,&MsgGUID, FMSG_ALLINONE|FMSG_MB_OKCANCEL, L"HelpTopic", (const wchar_t * const *)L"Title\nItem1\nItem2\nItem3", 0,0);или const wchar_t *Msg=L"Title\nItem1\nItem2\nItem3\nOk\nCancel"; Info.Message(&MainGUID,&MsgGUID, FMSG_ALLINONE, L"HelpTopic", (const wchar_t * const *)Msg, 0,2); |
BOOL IsDeleted(wchar_t *filename) { const wchar_t *Msg[5]; Msg[0]=GetMsg(MTitle); // заголовок сообщения Msg[1]=GetMsg(MIsDeleted); // тело сообщения Msg[2]=filename; Msg[3]=GetMsg(MDelete); // последние ButtonsNumber (2) строк - кнопки Msg[4]=GetMsg(MCancel); return Info.Message(&MainGUID,&MsgGUID, 0, L"DeleteFile", Msg, sizeof(Msg)/sizeof(Msg[0]), 2) == 0; }Причём, Info определяется как глобальная переменная:
struct PluginStartupInfo Info;...а инициализируется она в функции SetStartupInfoW:
void WINAPI SetStartupInfoW(struct PluginStartupInfo *Info) { ... ::Info=*Info; ... }