Шаг 157 - Немного про HTMLHelp

По мотивам переписки с Владимиром Кирко (vlyrki@aha.ru)

Какое-то время назад Microsoft заявила о том, что система помощи теперь будет новая и будет использовать HTML вместо RTF для создания файлов помощи. Такая справка пока есть не у многих продуктов, но в VC++ она реализованна именно так. И пресловутый MSDN реализован именно так. Вот посмотрите как она выглядит если еще не видели.

157_1.gif (9009 b)

В данном шаге я Вам покажу только обзор данной справки и некоторые возможности, которые мне понравились так как эта тема заслуживает отдельного раздела. Итак, расширение файла поменялось и файлы HTMLHelp теперь носят расширение chm. Для создания файла справки есть специальная программа HTML Help WorkShop, только она не ставится по умолчанию, а ставится отдельно. Из письма Владимира:

Владимир Кирко 
Она есть в "\HtmlHelp subdirectory on  Disc 1 of your Visual C++
 or Visual Studio CDs": htmlhelp.exe (3,599,496 байтов) - 
саморазворачивающийся и самоустанавливающийся. По каким-то причинам 
автоматом не ставится (её, по-моему, даже нет в основном меню установки - 
надо запускать самому).

И правда она не ставится и действительно находится на этом диске в том же месте. После установки у Вас создается группа программ под названием HTML HelpWorkShop.

157_2.gif (2544 b)

Процесс создания я описывать не буду сейчас, но вот что главное.

Вы готовите текст в HTML формате.
Создаете из файлов HTML оглавление и страницы
Компилируете.

А вот последнее меня очень порадовало. Вы представляете что происходит ??? Все файлы HTML вместе с рисунками упаковываются в один файл !! Меня это очень порадовало. Моя личная система помощи состоит из наверно тысяч HTML файлов. Передвигать куда-то её не очень удобно, а тут упаковал все вместе. У кого были подобные проблемы тот поймет моё восхищение. Но это не всё. Любой файл chm может быть декомпилирован и переведен в начальные HTML файлы. Даже файлы MSDN спокойно декомпилируются. Вот чего не хватало в обычной справке !!! Сделать это можно вот здесь.

157_3.gif (2605 b)

Но и это еще не все. При компиляции можно указывать нужно ли создавать полнотекстовую помощь. Если да, то у вас появится меню поиск, которое будет искать слово во всех документах. Это тоже классно. Помните, как вас в стандартной справке вечно спрашивали о создании подробного файла и при том он хранился отдельно. Стер его заново. Теперь все иначе все делается при компиляции и всё.

Это тоже еще не всё !!! Есть возможность делать коллекции файлов справки, чтобы они выглядели как одна книга. Для этого делается файл с расширением COL, который является обычным текстовым файлом с описанием тегов XML. То есть Вам уже не надо как в обычном help скомпилировать один большой файл и при изменениях его перекомпилировать. Делайте дополнения и добавляйте его в коллекцию. Вот как он выглядит.

<XML>
<HTMLHelpCollection>
<samplelocation value=""/>
<collectionnum value=2/>
<refcount value=0/>
<version value=2/>
<Folders>
<Folder>
	<TitleString value="Helps"/>
	<FolderOrder value=0/>
	<Folder>
		<TitleString value="ADO"/>
		<FolderOrder value=1/>
		<Folder>
			<TitleString value="ADO"/>
			<FolderOrder value=0/>
		</Folder>
	</Folder>
</Folder>
</Folders>
</HTMLHelpCollection>
</XML>

Если файл, который хранит параметры существующих на вашем компе коллекций. Я с ним пока не разобрался, так что просто скажу, что такой файл есть и формат его текстовый XML.

При запуске справки вы просто передаете этот файл файлу HH.EXE. Например, как в MSDN.

C:\WINDOWS\HH.EXE E:\Microsoft Visual Studio\MSDN98\98VS\1033\msdnvs98.col

И все файлы запускаются как одна книга в соотвествии, что Вы установили в коллекции.

Итак общие впечаления. После компиляции вам не надо хранить исходник. В любой момент вы можете декомпилировать файл и внести изменения. Круто !!! Из набора скомпилированных файлов можно делать коллекции, которые будут работать как один файл. Круто !!! Все упаковывается в один файл. Круто !!!

Есть подозрения, что по HTMLHelp нужно сделать отдельные шаги.

Владимир Кирко 
Правда есть и неприятная особенность: для  просмотра .chm должны быть hh.exe и 
hhctrl.ocx. А они ставятся IE4 и выше, так что с Netscape, видимо будут 
проблемы (или же одновременно с chm надо выдавать hh.exe hhctrl.ocx и объяснять
как этот ocx регистрировать).

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 19.03.2000