С>Подскажите можно ли заменить стандартный хелп, который подключается при создании проекта в AppWizard-е на HTML хелп, так чтобы он работал как обычный хелп, и если можно то как?
"Элементарно, Ватсон!"
хотя и несколько утомительно каждый новый проект начинать с Copy/Paste, эх, кто-бы wizard написал
Создать HTML help проект с помощью
HTML Help Workshop, hhc.exe из HTML Help Workshop будет потом использоваться при компиляции справки.
У меня HTML help проект расположен в подкаталоге html каталога с проектом программы, далее это влияет на пути.
Включить
hhp-файл этого проекта в проект своей программы
Отредактировать настройки проекта (All Configuration) для этого hhp файла:
*.hhp -> Custom Build ->
&Description:
Создание файла HTML-справки $(TargetName).chm...
Commands:
hhc.exe html\$(InputName).hhp
echo.
copy html\$(InputName).chm $(OutDir)\$(InputName).chm
Outputs:
html\$(InputName).chm
Dependencies:
html\$(TargetName).hm
и все htm, которые есть в проекте
resource.h -> Custom Build ->
&Description:
Создание заголовочного файла HTML-справки $(TargetName).hm...
Commands:
makehm ID_,IDH__,0x10000 IDM_,IDH_,0x10000 resource.h >>"html\$(TargetName).hm"
makehm IDP_,IDH_,0x30000 resource.h >>"html\$(TargetName).hm"
makehm IDR_,IDH_,0x20000 resource.h >>"html\$(TargetName).hm"
makehm IDD_,IDH_,0x20000 resource.h >>"html\$(TargetName).hm"
makehm IDW_,IDH_,0x50000 resource.h >>"html\$(TargetName).hm"
echo. >>"html\$(TargetName).hm"
MakeIDH "html\$(TargetName).hm"
makehm — консольная програмка для создания hm-файла с IDH_ идентификаторами, естественно должна лежать в доступном по PATH месте.
Output:
html\$(TargetName).hm
Прилинковать к проекту
htmlhelp.lib
Перегрузить виртуальную функцию WinHelp:
void YourClassMainFrame::WinHelp(DWORD dwData, UINT nCmd)
{
TRACE("Подсказка для IDH=0x%X\n",dwData);
if( HtmlHelp(m_hWnd, AfxGetApp()->m_pszHelpFilePath, HH_HELP_CONTEXT,
nCmd == HELP_CONTEXT ? dwData : 0) == NULL )
HtmlHelp(m_hWnd, AfxGetApp()->m_pszHelpFilePath, HH_HELP_FINDER, 0 );
}
в
InitInstance() добавить замену расширения по умолчанию для файла справки:
CString strHelpFile = m_pszHelpFilePath;
strHelpFile.Replace(".HLP", ".chm");
free((void*)(m_pszHelpFilePath));
m_pszHelpFilePath = _tcsdup(strHelpFile);
в
StdAfx.h добавить
#include <htmlhelp.h>
#include "html\..... .hm"
в карте сообщений CMyApp должно быть:
BEGIN_MESSAGE_MAP(CMyApp, CWinApp)
//{{AFX_MSG_MAP(CMyApp)
...
//}}AFX_MSG_MAP
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()
в файл
hhp добавить секцию:
[MAP]
#include your.hm
[ALIAS]
IDH_ABOUTBOX=about.htm
IDH_POPUP_MENU=interface.htm#SYSTEMMENU
и т.д. для всех диалогов, меню и т.д. чтоб при F1 выходить с них куда надо в справке
Оригинал:
http://codeguru.earthweb.com/help/html_help.shtml