ShowHelp

Programming Far Manager plugins

ShowHelp

Функция ShowHelp показывает заданный топик из hlf-файла.
BOOL WINAPI ShowHelp(
  const wchar_t *ModuleName,
  const wchar_t *HelpTopic,
  FARHELPFLAGS Flags
);

Параметры

ModuleName
Полное имя плагина. Его вы получаете в функции SetStartupInfoW.
HelpTopic
Тема помощи. Если параметр HelpTopic = NULL, то будет показана тема со стандартным именем "Contents".
Flags
Может быть одним из следующий значений (перечисление FARHELPFLAGS):
КонстантаОписание
FHELP_SELFHELP Трактовать параметр ModuleName как Info.ModuleName и показать тему из файла помощи вызвавшего плагина. Если HelpTopic начинается с символа ':', то будет показана тема из основного файла помощи Far Manager (в этом случае параметр ModuleName игнорируется).
FHELP_FARHELP Параметр ModuleName игнорируется и будет показана тема из основного файла помощи Far Manager. При этом в параметре HelpTopic не надо указывать первым символом ':'.
FHELP_CUSTOMFILE Трактовать параметр ModuleName как указатель на имя HLF-файла (c:\path\filename).
FHELP_CUSTOMPATH Трактовать параметр ModuleName как указатель на путь (c:\path), а файл выберется автоматически, исходя из текущих настроек языка.
FHELP_GUID Трактовать параметр ModuleName как указатель на GUID плагина, "существующий в этой сессии Far Manager". Файл выберется автоматически, исходя из текущих настроек языка. Если параметр ModuleName пустая строка ("") или равен GUID {00000000-0000-0000-0000-000000000000}, то будет показана тема из основного файла помощи Far Manager.
FHELP_USECONTENTS Если требуемая тема HelpTopic не найдена, то попытаться отобразить тему "Contents". Флаг может комбинироваться с другими флагами.
FHELP_NOSHOWERROR Не выводить сообщения об ошибках в случае, если требуемая тема или файл помощи не найдены. Флаг может комбинироваться с другими флагами.
FHELP_NONE Нулевой флаг.

Возвращаемое значение

TRUE - удалось передать параметры в Менеджер Помощи.
FALSE - ошибка:
  • Flags содержит неверное значение,
  • ModuleName = NULL для случаев, отличных от FHELP_FARHELP
  • Менеджер Помощи не нашёл заданный файл/тему помощи
  • Менеджер Помощи не нашёл файл/тему помощи в процессе навигации по системе помощи.

Пример

Для удобства при частом использовании можно использовать следующую функцию в вашей программе:
void ShowHelp(const wchar_t *HelpTopic)
{
  Info.ShowHelp(Info.ModuleName,HelpTopic,0);
}
Причём, Info определяется как глобальная переменная...
struct PluginStartupInfo Info;
...а инициализируется она в функции SetStartupInfoW:
void WINAPI SetStartupInfoW(const struct PluginStartupInfo *Info)
{
. . .
  ::Info=*Info;
. . .
}

Пример вызова темы создания линков из плагина FarCmds:

bool StrToGuid(const wchar_t *Value,GUID *Guid)
{
  return UuidFromString(reinterpret_cast<unsigned short*>((void*)Value), Guid) == RPC_S_OK;
}

GUID FindGuid;
if (StrToGuid(L"3A2AF458-43E2-4715-AFEA-93D33D56C0C2",&FindGuid))
  Info.ShowHelp((const wchar_t*)&FindGuid,L"Link",FHELP_GUID);
Смотрите также: