Ссылки на конкретные темы в HelpnDoc, скомпилированном CHM с использованием Visual C++ HtmlHelp
Я запутался здесь. Я перенес свою справку по CHM из HtmlHelp Workshop в HelpNDoc. Я скомпилировал файл CHM и обновил свой проект MFC, чтобы перейти к правильной теме:
HtmlHelp((DWORD_PTR)_T("msa-options-publishers-db.html"), HH_DISPLAY_TOPIC);
Вышеупомянутый подход работал с моим предыдущим файлом CHM. Когда я вызываю этот вызов, происходит следующее:
Это не находит это. Теперь у меня возникли трудности, потому что, если я нажму F1 в своей IDE (VS2017), я попаду сюда. Эта статья предоставляет пример для показа темы:
HWND hwnd =
HtmlHelp(
GetDesktopWindow(),
"c:\\Help.chm::/Intro.htm>Mainwin",
HH_DISPLAY_TOPIC,
NULL) ;
Выше HtmlHelp
Вызов API принимает 4 параметра. Тем не менее, по моему CDialogEx
Производный класс у меня только два параметра:
Поэтому мне нужно найти способ, с помощью которого можно открыть любую тему в моем файле CHM, скомпилированном с помощью HelpNDoc.
Обновить
На дальнейших исследованиях я нашел тему, которая обсуждает HtmlHelp
Вызов API, который я использую (находится в CWinApp
учебный класс). Говорится:
параметры
dwData
Определяет дополнительные данные. Используемое значение зависит от значения параметра nCmd.
nCmd
Указывает тип запрашиваемой помощи. Список возможных значений и их влияние на параметр dwData см. В параметре uCommand, описанном в разделе "О функции API HTMLHelp" в Windows SDK.
Таким образом, мы в конечном итоге здесь, где нам дают ссылку на детали о HH_DISPLAY_TOPIC
, Мы прошли полный круг. При внимательном рассмотрении говорится:
Указывает скомпилированный файл справки (.chm) или конкретную тему в скомпилированном файле справки.
Чтобы указать определенный тип окна, вставьте символ больше (>), а затем имя типа окна.
Так что мой код все еще должен быть в порядке.
1 ответ
Вы не поверите, насколько простым было решение этой проблемы!
Я сделал тест с окном HTML Help Workship API:
Единственный, который работал, был, когда я использовал htm
как суффикс а не html
, Увидеть: