По мотивам переписки с Владимиром Кирко (vlyrki@aha.ru)
Какое-то время назад Microsoft заявила о том, что система помощи теперь будет новая и будет использовать HTML вместо RTF для создания файлов помощи. Такая справка пока есть не у многих продуктов, но в VC++ она реализованна именно так. И пресловутый MSDN реализован именно так. Вот посмотрите как она выглядит если еще не видели.
В данном шаге я Вам покажу только обзор данной справки и некоторые возможности, которые мне понравились так как эта тема заслуживает отдельного раздела. Итак, расширение файла поменялось и файлы 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.
Процесс создания я описывать не буду сейчас, но вот что главное.
Вы готовите текст в HTML формате. Создаете из файлов HTML оглавление и страницы Компилируете.
А вот последнее меня очень порадовало. Вы представляете что происходит ??? Все файлы HTML вместе с рисунками упаковываются в один файл !! Меня это очень порадовало. Моя личная система помощи состоит из наверно тысяч HTML файлов. Передвигать куда-то её не очень удобно, а тут упаковал все вместе. У кого были подобные проблемы тот поймет моё восхищение. Но это не всё. Любой файл chm может быть декомпилирован и переведен в начальные HTML файлы. Даже файлы MSDN спокойно декомпилируются. Вот чего не хватало в обычной справке !!! Сделать это можно вот здесь.
Но и это еще не все. При компиляции можно указывать нужно ли создавать полнотекстовую помощь. Если да, то у вас появится меню поиск, которое будет искать слово во всех документах. Это тоже классно. Помните, как вас в стандартной справке вечно спрашивали о создании подробного файла и при том он хранился отдельно. Стер его заново. Теперь все иначе все делается при компиляции и всё.
Это тоже еще не всё !!! Есть возможность делать коллекции файлов справки, чтобы они выглядели как одна книга. Для этого делается файл с расширением 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 регистрировать).