# 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);

Смотрите также:
Файлы помощи