Как заменить стандартный HELP на HTMLHelp?

Odi$$ey Odi$$ey
С>Подскажите можно ли заменить стандартный хелп, который подключается при создании проекта в 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
Сергей
Сергей
19.03.2002 11:05
Здравствуйте Odi$$ey, Вы писали:

O$>"Элементарно, Ватсон!" хотя и несколько утомительно каждый новый проект начинать с Copy/Paste, эх, кто-бы wizard написал

Большое Спасиб!
Сергей
Сергей
19.03.2002 12:53
Здравствуйте Odi$$ey, Вы писали:

С>>Подскажите можно ли заменить стандартный хелп, который подключается при создании проекта в AppWizard-е на HTML хелп, так чтобы он работал как обычный хелп, и если можно то как?

С>>Спасиб.

O$>"Элементарно, Ватсон!" хотя и несколько утомительно каждый новый проект начинать с Copy/Paste, эх, кто-бы wizard написал


выдает какую-то дрочь:
Making Help File...
"hhc.exe" ­¥ ï¥âáï ¢­ãâ७­¥© ¨«¨ ¢­¥è­¥©
ª®¬ ­¤®©, ¨á¯®«­ï¥¬®© ¯à®£à ¬¬®© ¨«¨ ¯ ª¥â­ë¬ ä ©«®¬.
¥ 㤠¥âáï ­ ©â¨ 㪠§ ­­ë© ä ©«.
Error executing e:\windows\system32\cmd.exe.
Odi$$ey
Odi$$ey
19.03.2002 01:08
Здравствуйте Сергей, Вы писали:

С>Making Help File...

С>"hhc.exe" ­¥ ï¥âáï ¢­ãâ७­¥© ¨«¨ ¢­¥è­¥©
С>ª®¬ ­¤®©, ¨á¯®«­ï¥¬®© ¯à®£à ¬¬®© ¨«¨ ¯ ª¥â­ë¬ ä ©«®¬.
С>¥ 㤠¥âáï ­ ©â¨ 㪠§ ­­ë© ä ©«.
С>Error executing e:\windows\system32\cmd.exe.
С>

так русским языком же написано :

"hhc.exe" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. Не удается найти указанный файл.

Добавь путь к HTML Help Workshop в Tools-Options-Directories-Executable Files

P.S. Правила поведения в форумах:

"Если вы отвечаете на письмо, цитируйте из него только те отрывки, которые действительно необходимы для понимания, о чём идёт речь. "
Сергей
Сергей
19.03.2002 01:16
Здравствуйте Odi$$ey, Вы писали:

O$>Здравствуйте Сергей, Вы писали:

С>>Making Help File...

С>>"hhc.exe" ­¥ ï¥âáï ¢­ãâ७­¥© ¨«¨ ¢­¥è­¥©
................

O$>так русским языком же написано :

O$>"hhc.exe" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. Не удается найти указанный файл.

O$>Добавь путь к HTML Help Workshop в Tools-Options-Directories-Executable Files

O$>P.S. Правила поведения в форумах:

O$>"Если вы отвечаете на письмо, цитируйте из него только те отрывки, которые действительно необходимы для понимания, о чём идёт речь. "

я этот путь сразу прописал
Odi$$ey
Odi$$ey
19.03.2002 01:54
Здравствуйте Сергей, Вы писали:

O$>>"hhc.exe" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. Не удается найти указанный файл.

O$>>Добавь путь к HTML Help Workshop в Tools-Options-Directories-Executable Files

С>я этот путь сразу прописал

С>

у меня он кстати еще и в PATH прописался при установке.

Кстати, перекачай архивчик makehm я в него забыл засунуть утилитку MakeIDH.
Сергей
Сергей
20.03.2002 01:58
Здравствуйте Odi$$ey, Вы писали:

O$>Здравствуйте Сергей, Вы писали:

O$>>>"hhc.exe" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. Не удается найти указанный файл.

O$>>>Добавь путь к HTML Help Workshop в Tools-Options-Directories-Executable Files

С>>я этот путь сразу прописал

С>>

O$>у меня он кстати еще и в PATH прописался при установке.

O$>Кстати, перекачай архивчик makehm я в него забыл засунуть утилитку MakeIDH.

вот незадача!
я с этим хелпом возился два дня безуспешно, под конец второго дня я взял да и перегрузился из под XP на 2000 и... сразу всё заработало, грёбанный ХР...
причем под него у меня уже вторая прога не пашет