Я запутался здесь.Я перенес свою справку по 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) ;
Приведенный выше вызов API HtmlHelp
принимает 4 параметра.Тем не менее, в моем CDialogEx
производном классе у меня есть только два параметра:
Так что мне нужно найти способ, который будет работать, чтобы открыть любую темув моем файле CHM, скомпилированном с помощью HelpNDoc.
Обновление
В дальнейших исследованиях я нашел тему, которая обсуждает используемый вызов API HtmlHelp
(находится вCWinApp
класс).В нем говорится:
Параметры
dwData
Определяет дополнительные данные.Используемое значение зависит от значения параметра nCmd.
nCmd
Указывает тип запрашиваемой помощи.Список возможных значений и их влияние на параметр dwData см. В параметре uCommand, описанном в разделе «О функции API HTMLHelp» в Windows SDK.
Таким образом, мы в итоге получаем здесь где нам дается ссылка на детали о HH_DISPLAY_TOPIC
.Мы прошли полный круг.При ближайшем рассмотрении в нем говорится:
Указывает файл скомпилированной справки (.chm), или конкретную тему в файле скомпилированной справки.
Чтобы указать определенныйтип окна, вставьте символ больше (>), а затем имя типа окна.
Так что мой код все еще должен быть в порядке.