Подключение chm-файла
пробую так:
GetCurrentDirectory(sizeof(buffer),buffer);
WideString Help = WideString(buffer) + "\\R11_HELP.chm";
Application->HelpFile = Help;
Application->HelpCommand(HELP_CONTENTS, 0);
Выдает ошибку о том, что данный файл не являеться Win-справкой.
Как подключить chm-файл справки?
Как подключить chm-файл справки?
Правильно выдаёт ошибку... Вы же подключаете не *.hlp-файл, а *.chm...
Вам придётся довольствоваться только открытием chm-файла функциями, например, ShellExecute или CreateProcess; о привязке раздела справки к конкретному контролу, насколько я помню, в этом случае придётся забыть...
Выдает ошибку о том, что данный файл не являеться Win-справкой.
Как подключить chm-файл справки?
WinHelp (.hlp) и HTMLHelp (.chm) разные вещи.
Для данного типа справочного файлов нужно использовать функцию HtmlHelp(...)
например:
HtmlHelp(
GetDesktopWindow(),
"c:\\Help.chm::/Intro.htm>Mainwin",
HH_DISPLAY_TOPIC,
NULL) ;
И неужели можно привязать конкретный контрол к конкретному разделу справки?
Можно. Например, назначил контроллам св-во HelpContext и в обработчике TApplicationEvents::OnHelp
{
if (Command == HELP_CONTEXT || Command == HELP_CONTEXTPOPUP)
{
HtmlHelp(NULL, sHelpFile.c_str(), HH_HELP_CONTEXT, Data);
// не надо звать WinHelp
СallHelp = false;
}
return true;
}
А в рамках WinAPI-приложения как это дело организуется?
Какие-то дополнительные библиотеки подключать надо?
Какие-то дополнительные библиотеки подключать надо?
для начала нужно эту библиотеку создать:
implib htmlhelp.lib hhctrl.ocx
затем htmlhelp.lib добавить к проекту, или загружать hhctrl.ocx с помощью LoadLibrary и получать адреса ф-ий через GetProcAddress.
Какую именно, hhctrl.ocx? Она идет с виндой.