![]() |
|
|
Контекстная справка на HTML HelpНа примерах для VB.NETВведениеИстория справочных систем от Microsoft насчитывает четыре версии:
Автором WinHelp и HH является Ральф Уолден (Ralph Walden), работавший на MS с 1987 до начала 1998 года. После ухода из MS он основал KeyWorks Software. На настоящий момент наиболее удобным форматом, с точки зрения как разработки (наличие обширного инструментария), так и распространения (поддержка операционной системой), несомненно, является HTML Help 1.3. Создание простейшей справкиПроектОсновным файлом справки является файл проекта (.HHP), описывающий опции компиляции и содержащий ссылки на все другие файлы, участвующие при сборке. Структура .HHP-файла – это структура INI-файла. Обычно нет необходимости редактировать файл проекта вручную — все, что нужно, может быть задано с помощью HTML Help Workshop (HHW). Новый проект может быть создан с помощью мастера — командой File > New > Project. Файл проекта может быть создан и вручную. Вот пример типичного .HHP-файла: Содержание и предметный указательСодержание справки редактируется на вкладке Contents и содержится в .HHC-файле. Структура содержания — иерархическая, каждый элемент поименован, имеет иконку (выбирается из списка), к элементу содержания может быть привязана одна или несколько тем (HTML-файлов). Предметный указатель описывается на вкладке Index и хранится в .HHK-файле.
ТемыСтраницы справки (темы) для HH — это обычные HTML-страницы, для создания которых может быть использован любой HTML-редактор — начиная от простейших Notepad и FAR+Colorer до монстрообразных MS Word и FrontPage. Рекомендуется описать используемые во всех топиках стили с помощью CSS и поместить описание в отдельном файле — например, Manual.css — который подключать в заголовке каждой темы: Сборка (компиляция)Для сборки готового .CHM файла из HHW используйте команду File > Compile или соответствующую кнопку на панели команд. В некоторых случаях может понадобиться возможность сборки справочника в автоматическом режиме — используйте утилиту hhc.exe с параметром — именем файла проекта: Контекстная справкаБудем считать, что у нас уже написаны HTML-файлы, описывающие отдельные объекты программы (главное окно, диалоги и т.п.), и нам остается только связать программу с этими файлами. 1. В проекте на VB.NET заводим отдельный модуль (например, HelpSystem). В нем мы описываем все вещи в программе, для которых у нас будет контекстная справка, например: 2. В проекте справки заводим файл Map.h вида: т.е. здесь мы описываем то же, что и в HelpContextID enum, но в другом формате. HelpContextID enum и Map.h должны быть «синхронизированы» — чтобы ID в программе и в справке всегда совпадали. В C/C++ это было проще — формат файла Map.h был специально приспособлен для того, чтобы входной файл для справки совпадал с файлом, используемым в самой программе. В проекте справки заводим файл Aliases.h вида: Здесь задается отображение символического имени, заданного в Map.h, на конкретную тему и место в ней. Вызов контекстной справки происходит так: в HTML Help API передается идентификатор справки — целое число, которое определяется в HelpContextID enum — по нему (используя Map.h) определяется символическое имя, затем по символическому имени (используя Aliases.h) определяется тема, которая будет показана. В файле проекта справки задаем ссылки на Aliases.h и Map.h: 3. В программе на VB.NET описываем вызов справки: Здесь g_HelpFilePath — глобальная переменная с полным путем к файлу справки. g_ApplicationContext — глобальная переменная с контекстом приложения, используется для получения главного окна — можно его получать любым другим способом. Вызов из программыВезде, где нужен вызов справки, расставляем вызовы вида: Вызов содержания справки и предметного указателя: Вызов средствами Win32Хотя класс System.Windows.Forms.Help и предоставляет необходимую функциональность, бывают случаи, когда ее недостаточно. Например, окно справки всегда лежит поверх окна основного приложения, переданного первым параметром в функцию ShowHelp(). Окно справки может занимать значительное место и закрывать большую часть окна приложения — поэтому может оказаться удобным, чтобы окно справки могло перекрываться окном основного приложения. Но функция ShowHelp() не имеет такой функциональности — вы не можете передать первым параметром Nothing, поскольку получите исключение. В таком случае придется воспользоваться функцией WinAPI: Собственно вызов выглядит так: Теперь все отлично — окно справки висит отдельно, работать в программе не мешает. Helpware FARОсновной недостаток HTML Help Workshop — это его непредсказуемость. HHW может неожиданно «вылететь» практически в любой момент — например, при сохранении содержания справки, которое вы долго и мучительно редактировали. Второй недостаток — крайне неудобный интерфейс — чтобы добавить новый пункт в содержание, требуется выполнить десяток действий. Все это кажется ерундой, пока вы делаете простую справку для первой версии вашей программы — и превращается в настоящую проблему, если нужно создать мощную справочную систему с сотнями тем. К счастью, помимо HHW существуют и другие средства разработки HTML Help, среди которых я бы особо выделил Helpware FAR — бесплатный набор утилит для работы над справкой формата HH. Вот некоторые из его возможностей:
Распространение продуктаПрактически все используемые в настоящее время версии Windows уже содержат HTMLHelp: В Windows 95/98/NT можно установить HH с помощью дистрибутива HHUPD.EXE, который доступен после установки HHW. Для работы HH требуется IE 3.0 и выше. Для использования DHTML, очевидно, нужен IE версии 4, для XML понадобится IE версии 5 и выше. Последние версии IE включают в себя обновление HH — например, в состав IE 6.0 SP1 входит HH 1.4. Более подробно — см. HTML Help - Tech Info. СсылкиОбщая информация
ИнструментарийНаписание руководства пользователя
Никита Зимин, |
| © 2005–2012 ООО «Компания «Деловые программы» |