когда применяется справочная система windows кратко и понятно

Содержание

Справочная система Windows

Современное программное обеспечение отличается высокой сложностью, поэтому и в операционной системе, и в большинстве ее приложений предусмотрено наличие справочных систем. В Windows XP справочная система представляет собой не только набор справочных файлов, но и мощное средство для получения консультации и поддержки по любым проблемам, которые могут возникнуть в процессе работы с системой.

Способы получения справки

Главное меню

Вызов основного справочника Windows осуществляется из Главного меню командой Пуск Справка и поддержка.

Клавиша F1

Клавиша в Windows зарезервирована для вызова справочной информации по теме активного окна. Если открыто программное окно, то при нажатии клавиши появляется основное окно справки с содержанием разделов, в котором выделен (подсвечен) раздел соответствующий данной программе.

Если открыто диалоговое окно, то нажатие клавиши вызовет справку по теме запроса или текущего поля диалогового окна.

Справка в диалоговых окнах

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

Контекстная подсказка

Пояснения об элементах диалоговых окон можно получить и другим способом. Нужно щелкнуть на элементе правой клавишей мыши. При этом либо сразу появится всплывающая подсказка, либо контекстное меню с единственным пунктом «Что это такое?». Щелчок левой кнопкой на этих словах вызовет контекстную справку. Иногда достаточно указать на элемент мышью, чтобы появилась всплывающая подсказка.

Справка в приложениях

В строке меню почти всех Windows-программ имеется пункт Справка (иногда представленный просто знаком вопроса). При помощи этого пункта можно вызвать основное окно справки, а также получить справочную информацию о программе.

Работа с Центром справки и поддержки

То окно, которое открывается при запуске справки, называют домашней страницей. Для возвращения с любой страницы справки на домашнюю страницу предназначена кнопка Домой в панели инструментов.

На домашней странице представлены основные разделы справки в виде ссылок. Указатель мыши на ссылке принимает форму руки. Щелчок по ссылке (или нажатие клавиши ) выводит дополнительную информацию или открывает новую страницу справки.

Новая страница окна справки разделена на две области. Каждая из областей может иметь свои полосы прокрутки.

Левая область, в свою очередь, разделена на две части.

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

Текст в окне справки, помеченный синим цветом, обозначает ссылку на поясняющий текст.

Нижняя часть левой области называется Дополнительные сведения и содержит четыре пункта.

При выборе пункта Глоссарий Windows в панели содержимого отображается список всех технических определений, включенных в справочную систему. Список расположен в алфавитном порядке. Для быстрого перехода к термину используются кнопки всех букв русского и латинского алфавита. При выборе пункта Сервис на панели навигации отображаются все темы по служебным программам и сервисным возможностям операционной системы.

Для перехода по открывавшимся страницам используются кнопки Назад и Вперед, имеющие раскрывающиеся списки просмотренных страниц.

Если текст в окне справки помечен зеленым цветом, то при щелчке на нем появится окно с текстом определения данного термина.

Чтобы отобразить только панель содержимого центра справки и поддержки, содержащую текст раздела, нажмите кнопку Изменить вид на панели инструментов. Чтобы восстановить окно целиком, нажмите кнопку .

Можно уменьшить или увеличить область содержимого раздела в окне справки и поддержки. Для этого необходимо навести указатель на левую границу этой области. Когда указатель примет вид двунаправленной стрелки, перетащить границу влево или вправо.

Если поиск нужной темы в разделах справки не дал положительных результатов, то можно воспользоваться предметным указателем, щелкнув на кнопке Указатель.

Щелчок на кнопке Журнал в панели инструментов открывает список ранее просмотренных разделов и страниц справки.

Щелчок на кнопке Избранное в панели инструментов выводит список разделов или страниц, добавленных пользователем в список Избранное. Соответственно в Избранном со страницами можно делать различные действия: добавлять, удалять, переименовывать.

Чтобы добавить страницу в Избранное, нужно в контекстном меню открытой страницы (правой области окна) выбрать команду Добавить в Избранное или нажать кнопку Добавить в избранное в панели инструментов.

При добавлении в список Избранное внешней связанной страницы (не являющейся частью текущего файла справки) средство справки и поддержки добавляет ссылку на эту страницу, а не название раздела.

Чтобы удалить страницу из этого списка, нужно открыть Избранное, в контекстном меню имени раздела выбрать команду Удалить или щелкнуть на имени раздела и нажать кнопку Удалить.

Чтобы переименовать элемент в данном списке, нужно открыть Избранное, выбрать нужный раздел и нажать кнопку Переименовать.

Copyright © 2008-2010
Ющик Е.В. All Rights Reserved

Источник

Работаем в ОС Windows 7

Справочная система Windows 7

Справочная система — это своеобразный самоучитель, который поможет пользователю самостоятельно разобраться в большинстве вопросов, связанных с работой в Windows 7. Для вызова диалогового окна Справка и поддержка в Главном меню нажмите на кнопку Пуск и выполните одноименную команду (рис. 6.30 и 31).

Для поиска нужной информации воспользуйтесь текстовым полем ввода Поиск в справке. Введите в это поле слово или словосочетание, а затем нажмите на кнопку с изображением линзы в правой части поля. В окне Справка и поддержка отобразятся ссылки на все разделы справочной системы, где упоминаются искомые слова.

Рассмотрим основные элементы управления данного окна (рис. 6.32).

Упражнение 6.2. Использование точек восстановления в Windows 7

Точки восстановления предназначены для восстановления работоспособности операционной системы путем возвращения к предыдущему (предварительно сохраненному) ее состоянию.

Точка восстановления служит для восстановления системных файлов компьютера в состояние, соответствующее моменту времени в прошлом. Точка восстановления Windows 7 применяется для отмены ошибочных действий пользователя, приведших к нестабильной работе ПК.

Создание точки восстановления

Для того чтобы создать точку восстановления, то есть сохранить текущее работоспособное состояние операционной системы, необходимо выполнить команду Пуск → Панель управления → Система и безопасность → Система → Защита системы → Свойства системы (рис. 6.33).

В окне свойств системы следует нажать на кнопку Создать (рис. 6.34 ). После этих действий будет создана точка восстановления. В дальнейшем вы сможете вернуться к этому сохраненному состоянию операционной системы.

Откат системы на точку восстановления

Чтобы восстановить систему, которая по каким-либо причинам стала работать нестабильно, можно «откатить» ее к предыдущему работоспособному состоянию. Для того чтобы восстановить систему до нужной точки, необходимо в окне Свойства системы нажать на кнопку Восстановление (рис. 6.35).

В окне Мастера следует нажать на кнопку Далее и выбрать в списке нужную точку восстановления (если их несколько) (рис. 6.36).

Здесь снова нажать на кнопку Далее и подтвердить свои намерения, нажав на кнопку Готово ( рис. 6.37). Состояние системы будет возвращено к нужной временной точке.

Точкой восстановления Windows 7 можно воспользоваться, если ваш компьютер не загружается, прибегнув к безопасному режиму. В безопасном режиме нельзя создать точку восстановления, но «откатиться» с ее помощью к стабильному состоянию компьютера можно. Чтобы попасть в Безопасный режим, нужно нажать клавишу F8 на клавиатуре сразу же после запуска компьютера.

Резюме

В лекции были рассмотрены стандартные приложения Windows 7: программы Ножницы, Записки, Блокнот, WordPad, Калькулятор и Звукозапись, рассказано о Справочной системе. Windows 7 и дано упражнение на использование точек восстановления в Windows 7.

Источник

Когда применяется справочная система windows кратко и понятно

Ни одно приложение Windows, созданное на профессиональном уровне, не обходится без справочной системы, предназначенной для пользователя. До сих пор меню «Help» наших приложений в лучшем случае содержало строку «About. «, выбрав которую вы могли полюбоваться на номер версии приложения и фамилию разработчиков. Однако пользователь вправе ожидать большего. И вы не должны разочаровать его, обеспечив свое приложение удобной справочной системой, содержащей всю информацию, необходимую как для начинающих, так и для опытных операторов персонального компьютера.

Какими же возможностями должна обладать справочная система?

Как минимум, она должна содержать информацию о том, для чего предназначено приложение, как использовать меню и диалоговые панели. Необходимо описать методику выполнения различных процедур, таких как копирование в Clipboard, редактирование документов или аналогичных. Хорошо спроектированная справочная система должна содержать глоссарий, систему поиска информации по контексту и графические иллюстрации.

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

Даже не очень пристальный взгляд на то, что появляется на экране при работе с меню «Help» текстового процессора Microsoft Word for Windows наводит на размышления о необычайной сложности справочной системы. Однако не думайте, что создание таких систем доступно только избранным. Очень скоро вы научитесь делать подобные вещи или даже более мощные.

Схожесть внешнего вида справочных систем различных приложений наводит на мысль, что для их создания было использовано одно и то же средство. Это так и есть на самом деле.

Для создания справочных систем используется специальный help-компилятор, входящий в состав SDK и других продуктов Microsoft, предназначенных для разработки приложений, например, Microsoft FoxPro for Windows или Microsoft Visual Basic.

Пользователь работает со справочной системой при помощи приложения winhelp.exe, которое поставляется вместе с Windows. Программист также имеет доступ к средствам отображения справочной информации. В его распоряжении имеется функция WinHelp, которая входит в программный интерфейс Windows.

Можно сказать, что средства создания и просмотра справочных систем встроены в операционную систему Windows. И это очень хорошо, так как пользователю достаточно лишь один раз научиться работать со справочной системой какого-либо одного стандартного приложения, и он без труда сможет работать со справочными системами всех других приложений Windows.

К сожалению, некоторые приложения имеют нестандартные справочные системы, выполненные без помощи специально предназначенных для этого средств. Для примера можно привести картографическую систему MapInfo for Windows. «Самодельные» справочные системы дезориентируют пользователя, лишая его привычного способа «добывания» нужной информации. К тому же, внешний вид таких систем, информационное содержание и удобство использования обычно оставляют желать лучшего. И это не смотря на то, что разработка такой справочной системы может отнять много времени и сил.

Что же предлагает Microsoft для тех, кому нужно снабдить свое приложение справочной системой?

Прежде всего, такое удобное средство, как текстовый процессор Microsoft Word for Windows версий 2.0 и 6.0. Именно с помощью этого текстового процессора выполняется начальная подготовка текстовых и графических данных, которые будут содержаться в справочной системе.

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

Созданный документ сохраняется в формате RTF. Это универсальный текстовый формат, который обычно используется как промежуточный для конвертирования между форматами различных текстовых процессоров.

Строго говоря, для создания заготовки будущей справочной системы в формате RTF вы можете использовать помимо Word for Windows и другие текстовые процессоры. Однако в этом случае Microsoft не гарантирует, что все будет хорошо. Поэтому если вы собираетесь создавать справочные системы для Windows, лучше сразу обзавестись текстовым процессором Microsoft Word for Windows.

На следующем этапе исходный текст справочной системы преобразуется из формата RTF в hlp-файл. Для выполнения этой процедуры вам потребуется компилятор Microsoft Help Compiler. Он есть в составе SDK и поставляется в составе практически всех систем разработки приложений Windows, таких как Borland C++ for Windows и Microsoft Visual C++.

После завершения процесса компиляции справочная система готова к использованию. Вы можете работать с ней при помощи приложения winhelp.exe или при помощи функции WinHelp, вызываемой из вашего приложения.

Разделы

4.1. Раздел справочной системы Microsoft Word for Windows

Если размер окна недостаточен для отображения раздела целиком, у окна появляется горизонтальная или вертикальная полоса просмотра (либо сразу и горизонтальная, и вертикальная полоса просмотра).

Помимо основного окна, приложение winhelp.exe способно создавать вторичные перекрывающиеся окна и временные окна. В этих окнах также отображается содержимое разделов справочной системы.

Можно сказать, что справочная система состоит из многих разделов, связанных между собой многочисленными перекрестными ссылками и имеет структуру гипертекста. Каждый раздел обычно имеет заголовок, отображаемый в верхней части окна просмотра, идентификатор, набор ключевых слов, по которым можно найти раздел, а также ссылки на другие разделы.

Создавая исходный текст справочной системы в текстовом процессоре Microsoft Word for Windows, вы создаете разделы в виде групп обычных параграфов текста. Каждая группа должна начинаться с новой страницы и содержать в первом параграфе заголовок, идентификатор, ключевые поля и другие атрибуты в виде подстрочных сносок. Как мы уже говорили, вы можете включить в текст графические изображения или таблицы.

Перекрестные ссылки

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

Разработчик справочной системы может создать ссылку на другой раздел, либо на временное (pop-up) окно. Можно также создать ссылку на раздел, отобразив его во вторичном окне.

4.2. Раздел «Control Menus»

Обратите внимание на то, что в этом разделе есть ссылки на другие разделы, например, «Restore», «Move» и т. д.

Если выбрать мышью ссылку в виде строки, подчеркнутой пунктирной линией, на экране появится временное окно (рис. 4.3).

Временное окно обычно используется для пояснения термина. В нашем случае во временном окне объясняется понятие «application window».

Оглавление

Каждая книга имеет оглавление, пользуясь которым читатель без труда находит нужный ему раздел. Справочная система также должна иметь оглавление.

Как сделать оглавление?

Оглавление создается как отдельный раздел, который ничем не отличается от других разделов, за исключением того, что он описывается специальным образом при создании справочной системы и содержит прямые или косвенные ссылки на все остальные разделы.

В древовидном оглавлении один раздел выполняет роль корневого раздела. Он содержит ссылки на несколько разделов, отвечающих за различные темы (рис. 4.4).

4.4. Корневой раздел справочной системы приложения Microsoft Anti Virus

Если в корневом разделе справочной системы выбрать строку «Commands», на экране появится одноименный раздел, представляющий собой следующий иерархический уровень оглавления (рис. 4.5).

4.5. Раздел «Commands»

Иногда в оглавлении используются пиктограммы (рис. 4.6).

4.6. Пиктограммы в оглавлении

Пользователь может нажать на пиктограмму левой клавишей мыши, при этом на экране появится оглавление следующего уровня или раздел, на который сделана ссылка. Пиктограммы улучшают внешний вид и привлекательность справочной системы.

Органы управления

Приложение winhelp.exe имеет в своем главном окне меню и окно Toolbar, содержащее кнопки с различными надписями и обозначениями (рис. 4.7).

4.7. Органы управления приложения winhelp.exe

С помощью меню «File» пользователь может открыть новый hlp-файл (т. е. приступить к работе с новой справочной системой), выбрать принтер и распечатать содержимое текущего раздела, отображаемого в главном окне приложения winhelp.exe. К сожалению, возможность полной распечатки содержимого всей справочной системы отсутствует, что является серьезным недостатком приложения winhelp.exe.

Меню «Edit» предназначено для копирования всего текущего раздела или любого его фрагмента в Clipboard (рис. 4.8). При этом копируется только неформатированный текст без графических изображений (хотя можно было бы предоставить пользователю возможность скопировать все как есть в формате, например, текстового редактора Write, входящего в поставку Windows).

4.8. Копирование содержимого раздела в Clipboard

Тем не менее, возможность копирования информации из справочной системы в Clipboard даже в неформатированном виде является весьма ценной, так как позволяет, например, вставлять в исходный текст программы готовые фрагменты, взятые из примеров применения функций.

Строка «Annotate. » из меню «Edit» предназначена для добавления комментария к разделу (рис. 4.9).

4.9. Добавление комментария к разделу справочной системы

Меню «Bookmark» позволяет «вставить» в справочную систему закладку, как в обычную книгу (рис. 4.10). Такая закладка иногда называется маркером.

4.10. Создание закладок

По умолчанию для имени закладки выбирается заголовок раздела, однако пользователь может указать любое другое имя.

И, наконец, с помощью меню «Help» пользователь может узнать о том, как работать с приложением winhelp.exe, а также сделать главное окно этого приложения «непотопляемым», т. е. расположенным всегда над другими окнами (выбрав строку «Always on Top»).

Окно Toolbar содержит несколько кнопок, предназначенных для выполнения самых нужных функций.

С помощью кнопки «Contents» можно отобразить раздел, содержащий оглавление загруженного hlp-файла.

Нажав на кнопку «Search», пользователь получит возможность выполнить поиск информации по ключевому слову (рис. 4.11).

4.11. Поиск информации по ключевому слову

Кнопка «Back» позволяет вернуться к просмотру раздела, который отображался в окне приложения winhelp.exe в прошлый раз.

При помощи кнопки «History» пользователь может получить доступ к списку названий просмотренных ранее разделов (рис. 4.12). Он может выбрать из этого списка любой раздел и вызвать его на экран двойным щелчком левой клавиши мыши.

4.12. Список названий просмотренных ранее разделов

Разработчик справочной системы (то есть исходного файла справочной системы, попадающего на вход компилятора Microsoft Help Compiler) с помощью специальных макрокоманд может изменить состав органов управления приложения winhelp.exe при отображении данного файла. Например, он может добавить меню или новую кнопку.

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

Для начала вы вместе с нами сделаете простейшую справочную систему (вернее, ее заготовку) для гипотетического текстового редактора. При этом нашей основной целью будет научить вас создавать исходный текст справочной системы, файл проекта справочной системы и запускать компилятор Help Compiler.

Подготовка разделов

Как мы уже говорили, исходный текст справочной системы, поступающий на вход компилятора Help Compiler, должен быть сохранен в формате RTF (Rich Text Format). Этот формат описан в документации, которая поставляется вместе с SDK, но мы не знаем пока еще никого, подготовившего исходный текст справочной системы в этом формате. Приведем здесь небольшой фрагмент текста в формате RTF. Просто взгляните на него, и вам станет понятно, почему этим форматом трудно пользоваться:

К счастью, текстовый процессор Microsoft Word for Windows позволит вам создать справочную систему в режиме «почти WYSIWYG», когда внешний вид редактируемых разделов почти совпадает с тем, что увидит пользователь, запустивший справочную систему.

Атрибуты разделов

Перечислим атрибуты, которые может иметь раздел справочной системы. Только один из них должен быть указан всегда (контекст), остальные являются необязательными.

Атрибут раздела Описание
Контекст Текстовая строка, однозначно идентифицирующая раздел. Используется для ссылки на раздел. Это обязательный атрибут
Заголовок Заголовок, под которым раздел появляется при поиске с помощью кнопки «Search» приложения winhelp.exe. Этот атрибут необязательный
Список ключевых слов Пользователь может искать разделы по ключевым словам. Для каждого раздела можно задать несколько ключевых слов (но можно не задавать ни одного, в этом случае раздел не будет иметь доступ по ключевым словам). Справочная система может содержать несколько списков ключевых слов. Необязательный атрибут
Номер в последовательности просмотра Некоторые разделы могут иметь логическую последовательную связь. Данный атрибут позволяет задать положение раздела в последовательности просмотра. О последовательностях просмотра мы расскажем позже. Необязательный атрибут
Макрокоманда Для каждого раздела можно указать одну или несколько макрокоманд, запускаемых при отображении раздела. Макрокоманды мы рассмотрим позже
Тег компиляции Атрибут, который позволяет включать или не включать раздел в справочную систему в зависимости от параметров компиляции. Необязательный атрибут

В справочной системе не может быть двух разделов с одинаковым контекстом. Если же по ошибке вы сделаете такие разделы, компилятор Help Compiler выведет сообщение об ошибке.

Заголовок раздела (title of the topic) появляется в окне поиска и просмотра закладок, поэтому в хорошей справочной системе все разделы имеют заголовок. Максимальная длина текстовой строки заголовка составляет 128 символов.

Что же касается ключевых слов (keyword), то здесь вы можете использовать для каждого ключевого слова максимально 255 символов. Если для раздела используется несколько ключевых слов, их нужно разделить символом точка с запятой «;».

Теперь займемся последовательностями просмотра (browse sequences).

Для того чтобы вам было понятнее, что такое последовательность просмотра, рассмотрим пример справочной системы, описывающей меню приложения. Главное меню приложения состоит из нескольких временных меню, в каждом из которых, в свою очередь, имеется несколько строк. Для главного меню, для каждого временного меню и для каждой строки нужно создать отдельный раздел в справочной системе. Организуем эти разделы следующим образом (рис. 4.13).

4.13. Номера последовательностей просмотра

Для каждого временного меню определена своя последовательность просмотра, так как, изучая меню, пользователь, скорее всего, захочет последовательно ознакомится со всеми строками этого меню.

Обозначение номера последовательности меню состоит из имени и числа, разделенного символом двоеточия «:». Каждому имени соответствует отдельная последовательность просмотра. Что же касается чисел, то можно использовать любые целые значения, причем они не обязательно должны идти подряд. Более того, для облегчения вставки в последовательность новых разделов рекомендуется нумеровать их с некоторым интервалом, как когда-то нумеровались строки в программе на языке Бейсик.

Вы можете не использовать последовательности просмотра вовсе или создать одну последовательность, разместив в нее все разделы. Здесь все зависит от информационного содержания справочной системы и вашего вкуса.

Тегом компиляции (build tag) отмечаются разделы, которые включаются или не включаются в справочную систему на этапе компиляции в зависимости от содержимого одного из разделов файла проекта справочной системы (файл проекта будет рассмотрен позже). Тег компиляции удобно использовать при отладке.

Назначение атрибутов разделам справочной системы

Для назначения атрибутов разделам справочной системы вам необходимо освоить технику вставки подстрочных сносок в текстовом процессоре Microsoft Word for Windows.

Для вставки сноски вы должны выбрать из меню «Insert» текстового процессора Word for Windows строку «Footnote. «. На экране появится диалоговая панель «Footnote» (рис. 4.14).

4.14. Вставка сноски

В появившейся диалоговой панели в поле «Custom Footnote Mark» можно ввести символ, который будет использоваться для сноски, а можно использовать автоматическую нумерацию сносок.

При создании исходного текста справочной системы для назначения атрибутов используются сноски в виде символов, причем для каждого атрибута применяется свой символ:

Атрибут раздела Символ
Контекст #
Заголовок $
Список ключевых слов K
Номер в последовательности просмотра +
Макрокоманда, получающая управление при отображении раздела !
Тег компиляции *

В процессе назначения атрибута вам нужно вставить сноску, указав в поле «Custom Footnote Mark» (рис. 4.14) нужный символ.

4.15. Окно редактирования сносок

Текст сноски (в нашем случае это атрибут раздела) вводится после соответствующего символа в окне редактирования сносок. Между строкой и символом сноски должен быть только один символ пробела.

При помощи кнопки «Close» вы можете закрыть окно редактирования сносок. Для того чтобы вновь открыть это окно, выберите из меню «View» строку «Footnotes».

Создание перекрестных ссылок

Если выполняется переход на обычный раздел, в исходном тексте справочной системы первая часть ссылки оформляется как перечеркнутая или подчеркнутая двойной чертой строка текста. Если же выполняется переход во временное окно (рис. 4.3), используется однократное подчеркивание.

Строка контекста всегда оформляется скрытым текстом.

На рис. 4.16 показан фрагмент окна текстового процессора Word for Windows, в котором видны две ссылки.

4.16. Ссылки на временное окно и обычный раздел

Строка «графических изображений» содержит ссылку на раздел с контекстом «graphics». Обратите внимание, что первая часть ссылки подчеркнута одной чертой, а вторая оформлена скрытым текстом (показан как подчеркнутый линией, состоящей из точек). Так как строка «графических изображений» подчеркнута один раз, это ссылка на временное окно.

Вторая ссылка состоит из строк «Описание команд» и «cmd». Здесь мы видим ссылку на обычный раздел, имеющий контекст «cmd».

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

Для того чтобы выделить строку текста подчеркиванием или оформить как скрытый текст, используйте строку «Character» меню «Format» текстового процессора Word for Windows.

Создание вторичного окна

При создании ссылки на раздел можно указать, что его содержимое должно отображаться во вторичном окне. Для этого после строки контекста в тексте ссылки необходимо расположить символ > и имя окна:

Ссылка на другой hlp-файл

Можно создать ссылку на раздел, расположенный в другом hlp-файле. Для этого после строки контекста, оформленной скрытым текстом, надо расположить символ @ и сразу вслед за ним путь к файлу:

В этой строке все символы, расположенные после строки «SmartPad» необходимо оформить скрытым текстом.

Раздел, отображаемый при помощи ссылки на другой файл, можно показать во вторичном окне:

Создание исходного текста для файла hlpfile.hlp

Закрепим полученные знания на практике. Нашей задачей будет создание разделов простейшей справочной системы.

Запустите текстовый процессор Microsoft Word for Windows. Вы можете использовать версию 2.0 или 6.0, но мы будем рассматривать приемы использования Microsoft Word for Windows версии 2.0.

Если вы приобрели дискету, которая продается вместе с книгой, загрузите из каталога hlpfile файл hlpfile.rtf, содержащий готовый исходный текст справочной системы (рис. 4.17). Если у вас нет дискеты, вам придется набрать исходный текст самостоятельно. Рассмотрим этот процесс.

Вначале создайте новый документ. Сразу после создания документ будет содержать одну строку, имеющую стиль Normal. Наберите в этой строке заголовок первого раздела, а именно, раздела оглавления справочной системы. На рис. 4.17 это строка «Текстовый редактор».

Выберите шрифтовое оформление заголовка. Учтите, что приложение winhelp.exe при отображении текста в системе пользователя подберет наиболее подходящий шрифт из числа установленных шрифтов. Для достижения максимального соответствия старайтесь выбирать только те шрифты, которые входят в стандартную поставку Windows. При этом следует также учесть, что не во всех шрифтах есть символы кириллицы.

После завершения оформления выделите весь первый параграф и в списке стилей выберите стиль «heading 1», изменив его по вашему образцу. Теперь вы сможете использовать этот стиль для оформления всех заголовков справочной системы и тогда все заголовки будут выглядеть одинаково.

Если вам нужно, чтобы в процессе просмотра раздела заголовок всегда оставался на видном месте, задайте для стиля «heading 1» атрибут оформления параграфа «Keep With Next» (располагать строки параграфа на одной странице со следующей строкой). В этом случае в верхней части окна просмотра раздела образуется дополнительное окно, содержащее заголовок.

4.17. Первые два раздела справочной системы

Для каждого раздела справочной системы необходимо определить несколько атрибутов, перечисленных выше.

Для того чтобы задать контекст, выполните следующие шаги:

расположите текстовый курсор в начале строки заголовка (в нашем случае курсор должен находится в начале первой строки)

вставьте подстрочную сноску (footnote) с идентификатором #

наберите в качестве текста сноски строку контекста

Затем, после определения контекста, укажем заголовок раздела, под которым он будет появляться при поиске (для поиска используется кнопка «Search», расположенная в окне Toolbar приложения winhelp.exe).

Задайте список ключевых слов, по которым пользователь сможет найти раздел. Список ключевых слов задается как сноска с идентификатором K. Вы можете задать несколько ключевых слов, разделив их символом точка с запятой.

В заключение задайте номер последовательности просмотра как сноску с идентификатором +, указав строку «cont:010».

Окно сносок для первого и второго разделов должно выглядеть следующим образом:

Аналогичным образом подготовьте остальные разделы справочной системы (рис. 4.18 и 4.19).

4.18. Третий, четвертый и пятый разделы справочной системы

4.19. Шестой, седьмой, восьмой и девятый разделы справочной системы

В окне редактирования сносок для разделов с третьего по девятый должны быть определены следующие сноски:

Подготовив текст, сохраните его в формате RTF. Для этого из меню «File» выберите строку «Save as. » и в появившейся диалоговой панели в списке «Save File as Type» выберите строку «Rich Text Format (*.rtf)».

Затем вы можете сохранить файл и в естественном формате Word for Windows, хотя это и не обязательно.

Создание файла проекта справочной системы

Итак, на данный момент вы создали (или, что лучше и быстрее, переписали с дискеты) файл hlpfile.rtf, содержащий исходный текст разделов справочной системы. Следующим шагом будет подготовка файла проекта hlpfile.hpj, необходимого для работы компилятора Help Compiler.

Готовый файл hlpfile.hpj вы можете найти на дискете, которая продается вместе с книгой. Если дискеты нет, наберите файл самостоятельно, пользуясь листингом 4.1.

Для набора файла проекта вы можете выбрать любой текстовый редактор, сохраняющий файл без шрифтового оформления. Подойдет редактор Notepad или редактор, входящий в систему разработки Borland C++ for Windows. Можно использовать даже встроенный в Norton Commander текстовый редактор или аналогичное средство MS-DOS. И пусть вас не смущает, что вы не сможете использовать символы кириллицы из-за различий в кодировке для MS-DOS и Windows, так как. вы не сможете их использовать в любом случае. В файле проекта символы кириллицы недопустимы.

Листинг 4.1. Файл hlpfile/hlpfile.hpj

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

Рассмотрим назначение секций файла проекта нашей справочной системы.

OPTIONS

Параметры, определенные в этой секции, управляют процессом создания справочной системы на этапе компиляции. Секция OPTIONS должна быть определена в файле проекта первой.

Перечислим некоторые параметры, значения которых задаются в секции OPTIONS:

FILES

В этой секции перечисляются файлы разделов *.rtf, из которых создается справочная система. В простейшем случае все разделы могут находиться в одном rtf-файле, однако для сложных и разветвленных справочных систем такой подход затрудняет процесс отладки.

WINDOWS

Параметры секции определяют внешний вид окон приложения winhelp.exe.

Характеристики окна определяются следующим образом:

Для определения характеристик главного окна приложения winhelp.exe в качестве wndname следует указать строку «main»:

Разработчик справочной системы может создавать дополнительные (вторичные) окна, имеющие уникальные имена. Для определения внешнего вида такого вторичного окна вместо wndname следует указывать имя этого окна.

Параметр caption задает заголовок окна.

Параметры horizposition, vertposition, width и height предназначены, соответственно, для определения горизонтального положения, вертикального положения, ширины и высоты окна. При этом следует использовать значения в диапазоне от 0 до 1024. Действительные размеры окна будут пересчитаны в соответствии с текущим разрешением экрана.

С помощью параметра sizing можно указать начальные размеры вторичного окна при его появлении на экране. Если этот параметр указан как 1, устанавливаются максимальные размеры окна. Если же значение параметра равно 0, размеры окна определяются параметрами horizposition, vertposition, width и height.

Параметры (clientRGB) и (nonscrollingRGB) задаются как тройки чисел, разделенных запятыми. Эти числа определяют, соответственно, красную, зеленую и голубую компоненту цвета для внутренней области главного окна приложения winhelp.exe и для несворачиваемого окна заголовка раздела, располагающегося в верхней части главного окна.

Если для вторичного окна указать параметр topmost, равный 1, это окно будет всегда располагаться над другими окнами, превратившись в «непотопляемое».

Неиспользуемые параметры можно не указывать, однако в строке параметров должны присутствовать все запятые до последнего указанного параметра.

CONFIG

Эта секция нужна в том случае, если разработчик справочной системы использовал дополнительные возможности приложения winhelp.exe, такие как дополнительные кнопки, макрокоманды, вызовы функций из внешних DLL-библиотек и т. п.

Компиляция исходных файлов проекта

Для того чтобы у вас не было проблем с нехваткой оперативной памяти и совместимостью с Windows версии 3.1, используйте компилятор Windows Help Compiler версии 3.10.504 или более свежей версии. Лучше всего запускать компилятор из DOS-окна в среде Windows, так как в этом случае ему будет доступна расширенная память.

Сделайте текущим каталог hlpfile и запустите компилятор hc31.exe, передав ему в качестве параметра имя файла hlpfile.hpj. В результате работы компилятора при условии отсутствия грубых ошибок в исходных файлах будет создан файл справочной системы hlpfile.hlp.

Запустите приложение winhelp.exe и выберите при помощи меню «File» только что созданный файл hlpfile.hlp. Вы увидите раздел оглавления справочной системы (рис. 4.20).

4.20. Раздел оглавления файла hlpfile.hlp

Проверьте работу кнопок просмотра последовательностей разделов и ссылки, убедившись в том, что все работает правильно. Если что-то не так, скорее всего, вы допустили ошибку при подготовке исходных файлов.

Встроенная в Windows справочная система позволяет использовать 16-цветные графические изображения (битовые и метафайлы) как для иллюстрации, так и в качестве средства организации ссылок на разделы.

Непосредственная вставка изображения

Самый простой способ включения графического изображения был использован в примере файла hlpfile.rtf. Мы подготовили изображение в графическом редакторе Paintbrush и вставили его через Clipboard непосредственно в текст, пользуясь текстовым процессором Microsoft Word for Windows.

Этот способ хорош в тех случаях, когда одно и то же изображение вставляется в текст справочной системы один-два раза. Дело в том, что сколько раз вы вставите в текст одну и ту же картинку, столько раз соответствующей ей массив данных будет записан в hlp-файл. Еще одно ограничение заключается в том, что вы можете вставить изображение только как символ в текстовую строку. При этом невозможно добиться эффекта «обтекания» изображения текстом.

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

Вставка с помощью ссылки

Чаще для вставки графических файлов в исходный текст раздела справочной системы используется косвенная ссылка следующего вида:

Здесь приведены три ссылки на файлы check1.bmp, check2.bmp и check3.bmp, содержащие графические изображения. Перед именем файла необходимо указать одну из трех команд вставки (есть две разновидности каждой команды, см. ниже). В зависимости от выбранной команды будет использован один из трех способов взаимного расположения текста и графического изображения в окне раздела:

Команда Способ расположения
bmc,bmcwd Графическое изображение будет вставлено в строку как символ. При этом оформление параграфа (например, высота строки) будет применяться и к изображению
bml,bmlwd Графическое изображение выравнивается по левой границе, текст располагается справа от графического изображения
bmr,bmrwd Графическое изображение выравнивается по правой границе, текст располагается слева от графического изображения

Если вы создаете справочную систему, предназначенную для записи на компакт-диск, в некоторых случаях удобнее использовать команды bmcwd, bmlwd, bmrwd. При использовании этих команд графические данные располагаются на диске рядом с окружающим их текстом, что значительно ускоряет процесс отображения.

Если на один и тот же графический файл будет сделано несколько ссылок, при использовании команд bmc, bml и bmr в hlp-файле будет храниться только один экземпляр графических данных. Если же изображения вставлены командами bmcwd, bmlwd и bmrwd, для одного и того же изображения графические данные будут вставлены в hlp-файл столько раз, сколько имеется ссылок.

Использование изображений для ссылок на раздел

Ранее мы рассмотрели способ организации гипертекстовых ссылок между разделами с использованием специальным образом выделенных текстовых строк. Однократно или двукратно подчеркнутая строка в сочетании со строкой контекста, оформленной скрытым текстом, служит в качестве чувствительной точки (hot spot). При выборе такого изображения мышью произойдет переход к другому разделу (или временному окну).

В качестве такой чувствительной точки можно использовать графическое изображение, вставленное при помощи ссылки на имя bmp-файла:

В данном примере битовое изображение logo.bmp используется для организации гипертекстового перехода к разделу с контекстом «missing».

Гиперграфика

Нельзя не упомянуть о возможности создания нескольких чувствительных точек в одном графическом изображении. Такое изображение называется гиперграфическим.

Для создания гиперграфического изображения используется специальный редактор Microsoft Hotspot Editor (приложение shed.exe, поставляется в составе практически всех средств разработки приложений Windows). Получая на входе файл с битовым изображением или метафайлом, этот редактор создает файл с расширением имени shg, содержащий кроме изображения описание размеров и расположения чувствительных зон и соответствующих им строк контекста.

Так как практически гиперграфика используется достаточно редко, ради экономии места в книге мы оставим этот материал на самостоятельное изучение. Всю необходимую информацию вы сможете получить в руководстве Help Compiler Guide, которое поставляется в составе SDK (а также из справочной системы редактора Microsoft Hotspot Editor).

Как учесть разрешение монитора

Разработчики приложений Windows работают на мощных компьютерах, оснащенных современными 17-дюймовыми мониторами и видеоконтроллерами, способными работать при разрешении, скажем, 1280х1024 пикселов (ну хорошо, не все разработчики так хорошо живут, но многие). И вот, подготовив в одном из режимов работы монитора с высоким разрешением прекрасное битовое изображение, они вставляют его в справочную систему и поставляют пользователям. А у тех обычно техника выглядит поскромнее.

Запустив такую справочную систему на компьютере с монитором EGA (что еще не самый плохой вариант!), пользователи сталкиваются с искажениями графических изображений. Рисунки, подготовленные в режиме с высоким разрешением, не помещаются на экране компьютера!

Для выхода из подобной ситуации Microsoft разработал специальный формат файла, в котором предусмотрено хранение нескольких битовых изображений с разным разрешением в одном файле.

Компилятор Microsoft Windows Multiple Resolution Bitmap Compiler (файл mrbc.exe) может объединить несколько bmp-файлов, подготовленных в режимах с разным разрешением, в один файл с расширением имени mrb.

Если такой файл вставить в исходный текст справочной системы при помощи ссылки (команды bmc, bml, bmr и т. п.), при отображении будет использоваться то изображение, разрешение которого соответствует текущему разрешению монитора.

Подготовьте 4 варианта одного и того же графического изображения (в формате DIB) в режимах CGA, EGA, VGA и 8514. Вы должны создать 4 bmp-файла.

Затем измените расширение имени файла так, чтобы первая буква расширения указывала на использованное при подготовке файла разрешение:

Первая буква расширения имени Разрешение Пример имени файла
c CGA nicebmp.cga
e EGA nicebmp.ega
v VGA nicebmp.vga
8 8514 nicebmp.854

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

Получившийся в результате файл nicebmp.mrb можно использовать для ссылки в исходном тексте справочной системы.

Компилятор Help Compiler распознает значительное количество встроенных в справочную систему макрокоманд, с помощью которых можно модифицировать меню и Toolbar, добавляя или удаляя строки меню и кнопки, выполнять переходы между разделами и поиск разделов, запускать произвольные приложения Windows и вызывать функции из внешних DLL-библиотек.

Макрокоманда имеет имя и параметры, указанные в скобках. Параметр может быть текстовой строкой или числом (десятичным или шестнадцатиричным, в последнем случае перед числом должны находится символы 0x). Каждый параметр, заданный в виде текстовой строки, должен быть взят в кавычки:

Допустимы вложенные вызовы макрокоманд, однако в этом случае для внутренних макрокоманд вместо обычных кавычек следует использовать символы (`) и (‘):

Символ (`) находится на той же клавише, где и символ (

Если вам нужно вставить в текстовую строку параметра макрокоманды символы («), (`), (‘), (\), то перед ними необходимо расположить символ (\).

Вызов макрокоманды

Как вызвать макрокоманду?

Для этого существует несколько способов.

Во-первых, можно вызвать одну или несколько макрокоманд при загрузке hlp-файла. Такие макрокоманды могут выполнять инициализирующие функции, нужные для работы со всеми разделами справочной системы. Примером может послужить вызов макрокоманды BrowseButtons в разделе CONFIG файла проекта справочной системы hlpfile.hpj:

В разделе CONFIG можно указывать сразу несколько макрокоманд.

Во-вторых, можно запускать одну или несколько макрокоманд при отображении раздела справочной системы. Для этого имя макрокоманды необходимо оформить как подстрочную ссылку с идентификатором «!»:

Для запуска нескольких макрокоманд их надо разделить символом «;»:

В-третьих, можно сделать так, чтобы макрокоманда запускалась при выборе чувствительной точки, созданной при помощи подчеркнутого текста или ссылки на битовое изображение:

Здесь при выборе строки «Запустить часы» будет исполнена макрокоманда ExecProgram, предназначенная для запуска приложений. В данном случае будет запущено приложение clock.exe.

Список встроенных макрокоманд

В этом разделе мы приведем краткий справочник по встроенным макрокомандам справочной системы Windows.

About()

Отображение диалоговой панели «About. «.

AddAccelerator(key, shift, «macro»)

Назначение комбинации клавиш ускоренного запуска для указанной макрокоманды, т. е. создание акселератора.

Параметр Описание
key Виртуальный код клавиши ускоренного запуска макрокоманды
shift Использование дополнительных клавиш сдвига:0 клавиши сдвига не используются;1 2 3 4 5 6 7
macro Имя макрокоманды, которая будет выполнена после того как пользователь нажмет комбинацию клавиш, заданную первыми двумя параметрами

Annotate()

Вывод на экран диалоговой панели «Annotate».

AppendItem(«menuid», «itemid», «itemname», «macro»)

Добавление строки к меню, созданному макрокомандой InsertMenu.

Параметр Описание
menuid Имя меню, использованное в макрокоманде InsertMenu
itemid Имя, идентифицирующее строку меню
itemname Текстовая строка, отображаемая в добавляемой строке меню
macro Имя макрокоманды, которая будет выполнена после того как пользователь выберет из меню добавленную макрокомандой AppendItem строку

Отображение предыдущего раздела (в списке просмотренных разделов).

BookmarkDefine()

Отображение диалоговой панели «Bookmark Define».

BookmarkMore()

Отображение диалоговой панели «More», отображаемой при выборе строки «More. » из меню «Bookmark» приложения winhelp.exe.

BrowseButtons()

Добавление в окно Toolbar приложения winhelp.exe кнопок последовательного просмотра разделов с обозначениями и (по умолчанию эти кнопки не создаются).

ChangeButtonBinding(«buttonid», «buttonmacro»)

С помощью этой макрокоманды можно закрепить за кнопкой «Help» указанную макрокоманду.

Параметр Описание
buttonid Идентификатор кнопки, использованный при ее создании макрокомандой CreateButton, или один из встроенных идентификаторов стандартных кнопок: btn_contents, btn_search, btn_back, btn_history, btn_previous, btn_next
buttonmacro Имя макрокоманды, которая будет выполнена, когда пользователь нажмет на кнопку

ChangeItemBinding(«itemid», «itemmacro»)

Эта команда предназначена для закрепления макрокоманды за заданной строкой меню.

Параметр Описание
itemid Идентификатор строки меню, присвоенный макрокомандой AppendItem
itemmacro Имя макрокоманды, которая будет выполнена, когда пользователь выберет указанную строку

CloseWindow(«windowname»)

Макрокоманда закрывает окно с именем windowname, которое может быть как основным окном приложения winhelp.exe, так и вторичным.

Contents()

Переход к разделу, выполняющему функции оглавления справочной системы.

CopyDialog()

Отображение на экране диалоговой панели «Copy», предназначенной для копирования всего раздела или его фрагмента в Clipboard.

CopyTopic()

Копирование текущего (отображаемого в главном окне) раздела в Clipboard.

CreateButton(«buttonid», «name», «macro»)

Создание новой кнопки в окне Toolbar приложения winhelp.exe.

Параметр Описание
buttonid Идентификатор создаваемой кнопки
name Текстовая строка, которая появится на кнопке
macro Имя макрокоманды, которая будет выполнена, когда пользователь выберет созданную кнопку

DeleteItem(«itemid»)

Удаление строки меню с идентификатором itemid.

DeleteMark(«marktext»)

Удаление отметки в тексте, созданной макрокомандой SaveMark.

DestroyButton(«buttonid»)

Удаление кнопки с идентификатором buttonid.

DisableButton(«buttonid»)

Блокирование кнопки с идентификатором buttonid.

DisableItem(«itemid»)

Блокирование строки меню с идентификатором itemid.

EnableButton(«buttonid»)

Разблокирование кнопки с идентификатором buttonid.

EnableItem(«itemid»)

Разблокирование строки меню с идентификатором itemid.

ExecProgram(«cmd», «show»)

Запуск приложения Windows.

Параметр Описание
cmd Командная строка для запуска (с параметрами запуска)
show Способ отображения окна запускаемого приложения:0 нормальное;1 минимизированное;2 максимизированное

Завершение работы приложения winhelp.exe.

FileOpen()

Отображение диалоговой панели «Open», которая обычно появляется при выборе из меню «File» приложения winhelp.exe строки «Open. «.

FocusWindow(«windowname»)

Назначение фокуса ввода окну, указанному параметром windowname.

GoToMark(«marktext»)

Переход на отметку в тексте (закладку) с именем marktext, установленную макрокомандой SaveMark.

HelpOn()

Отображение содержимого справочной системы, содержащей информацию об использовании приложения winhelp.exe.

History()

Отображение диалоговой панели «History», позволяющей выбрать один из нескольких только что просмотренных разделов справочной системы.

IfThen(. )

Условный запуск макрокоманды. Обычно используется вместе с макрокомандой IsMark:

Параметр Описание
markertext Маркер, который проверяется макрокомандой IsMark
macro Имя макрокоманды, которая будет выполнена, если указанный маркер существует

IfThenElse(. )

Запуск одной из двух макрокоманд в зависимости от существования маркера. Обычно используется вместе с макрокомандой IsMark:

Параметр Описание
markertext Маркер, который проверяется макрокомандой IsMark
macro1 Имя макрокоманды, которая будет выполнена, если указанный маркер существует
macro2 Имя макрокоманды, которая будет выполнена, если указанный маркер не существует

InsertItem(«menuid», «itemid», «itemname», «macro», «pos»)

Вставка новой строки в существующее меню в заданной позиции.

Параметр Описание
menuid Имя меню, использованное в макрокоманде InsertMenu, или одно из имен стандартных меню: mnu_file, mnu_edit, mnu_bookmark, mnu_helpon.
itemid Имя, идентифицирующее строку меню
itemname Текстовая строка, отображаемая в новой строке меню
macro Имя макрокоманды, которая будет выполнена после того как пользователь выберет из меню вставленную строку
pos Позиция, где будет вставлена строка. Значение 0 соответствует самой верхней позиции в меню

InsertMenu(«menuid», «menuname», pos)

Добавление нового временного меню к главному меню приложения winhelp.exe.

Параметр Описание
menuid Идентификатор добавляемого меню
menuname Текстовая строка названия меню
pos Позиция, где будет вставлено меню. Значение 0 соответствует самой левой позиции в главном меню приложения winhelp.exe

IsMark(«marktext»)

Эта макрокоманда проверяет, существует ли маркер (закладка), указанная в параметре marktext и определенная макрокомандой SaveMark. Используется совместно с макрокомандами IfThen и IfThenElse.

JumpContents(«hlp_filename»)

Отображение раздела, выполняющего роль оглавления справочной системы, расположенной в hlp-файле с именем hlp_filename.

JumpContext(«filename», contextnumber)

Переход к разделу, номер контекста которого равен contextnumber. Расположение раздела (имя hlp-файла) определяется параметром filename.

Параметр Описание
filename Имя hlp-файла
contextnumber Номер контекста раздела в указанном hlp-файле. Этот номер должен быть определен в разделе MAP файла проекта *.hpj справочной системы

Немного о секции MAP и о номере контекста раздела.

Приведем пример оформления секции MAP:

Для номеров контекста можно использовать шестнадцатиричные или десятичные числа.

Допускается также включать в секцию MAP incude-файлы в стандарте Си, содержащие определения констант. Для этого необходимо использовать обычный оператор #include:

JumpHelpOn()

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

JumpId(«filename», «contextstring»)

Переход к разделу с контекстом contextstring. Расположение раздела (имя hlp-файла) определяется параметром filename.

Параметр Описание
filename Имя hlp-файла
contextstring Строка контекста раздела, на который выполняется переход

JumpKeyword(«filename», «keyword»)

Поиск раздела по ключевому слову keyword. Расположение раздела (имя hlp-файла) определяется параметром filename.

Параметр Описание
filename Имя hlp-файла
keyword Ключевое слово, по которому выполняется поиск раздела справочной системы

Переход к следующему разделу в разделах, расположенных последовательно.

Эта макрокоманда инвертирует результат проверки, выполняемой макрокомандой IsMark:

PopupContext(«filename», contextnumber)

Отображение раздела, номер контекста которого равен contextnumber. Расположение раздела (имя hlp-файла) определяется параметром filename.

Параметр Описание
filename Имя hlp-файла
contextnumber Номер раздела в указанном hlp-файле. Этот номер должен быть определен в разделе MAP файла проекта *.hpj справочной системы

PopupId(«filename», «contextstring»)

Отображение раздела с контекстом contextstring. Расположение раздела (имя hlp-файла) определяется параметром filename.

Параметр Описание
filename Имя hlp-файла
contextstring Строка контекста отображаемого раздела

PositionWindow(x, y, w, h, wndstate, «windowname»)

Изменение размеров и расположения главного или вторичного окон приложения winhelp.exe.

Параметр Описание
x X-координата верхнего левого угла окна (значение параметров x, y, w, h может находиться в диапазоне от 0 до 1024)
y Y-координата верхнего левого угла окна
w Высота окна
h Ширина окна
wndstate Состояние окна:0 нормальное;1 максимизированное
windowname Имя окна (главному окну приложения winhelp.exe соответствует имя «main»)

Переход к предыдущему разделу в разделах, расположенных последовательно.

Print()

Печать содержимого текущего (отображаемого в главном окне) раздела на принтере.

PrinterSetup()

Установка параметров принтера с помощью диалоговой панели «Print Setup».

RegisterRoutine(«DLLname», «functionname», «format»)

Параметр Описание
DLLname Имя DLL-библиотеки, из которой выполняется вызов функции
functionname Имя функции
format Описание формата параметров.

Строка описания параметров состоит из отдельных букв, соответствующих типу параметров функции:

Буква в строке формата Тип параметра
u unsigned short
U unsigned long
i short int
I long int
s near char *
S far char *
v void

SaveMark(«marktext»)

Эта макрокоманда сохраняет расположение текущего отображаемого раздела и файла в виде закладки или маркера, имеющего имя marktext.

Отображает диалоговую панель «Search», которая обычно появляется на экране, если нажать кнопку «Search» в окне Toolbar приложения winhelp.exe.

SetContents(«filename», «contextnumber»)

С помощью этой макрокоманды вы можете указать, что раздел, имеющий номер контекста contextnumber, должен использоваться в качестве оглавления справочной системы, расположенной в hlp-файле с именем filename.

Параметр Описание
filename Имя hlp-файла
contextnumber Номер раздела в указанном hlp-файле. Этот номер должен быть определен в разделе MAP файла проекта *.hpj справочной системы

SetHelpOnFile(«filename»)

Вы можете заместить справочную систему, содержащую сведения об использовании приложения winhelp.exe (расположенную в файле winhelp.hlp) на свою собственную. Для этого в качестве параметра макрокоманде SetHelpOnFile следует указать имя hlp-файла, замещающего файл winhelp.hlp.

Приложения Windows обращаются к справочной системе с помощью специально предназначенной для этого функции WinHelp. Когда приложение вызывает эту функцию, происходит запуск приложения winhelp.exe. Вызывая функцию WinHelp, приложение может отобразить на экране любую информацию, обычно доступную пользователю через меню или кнопки окна Toolbar приложения winhelp.exe.

Хорошо спроектированное приложение имеет меню «Help», с помощью которого пользователь может получить доступ к оглавлению и предметному указателю справочной системы. Кроме этого, обычно имеется возможность получения так называемой контекстно-зависимой справочной информации. Если вы работали со справочной системой, входящей в состав Borland C++ или Microsoft Visual C++, то вы уже знаете, что это такое.

Функция WinHelp позволяет организовать поиск нужного раздела в справочной системе и отображение его на экране, но и только. Задача отслеживания текущего состояния органов управления и организации контекстно-зависимой подсказки целиком ложится на плечи разработчика приложения.

Прототип функции WinHelp

Прототип функции WinHelp определен в файле windows.h:

Параметр hwndMain перед вызовом функции должен содержать идентификатор окна, для которого вызывается справочная система.

Через параметр lpszHelp передается указатель на текстовую строку, закрытую двоичным нулем, в которой должен быть записан путь к hlp-файлу, содержащему нужную справочную систему.

Функция WinHelp может выполнять одну из нескольких операций в зависимости от значения параметра usCommand:

Команда Описание
HELP_COMMAND0x0102 Выполнение макрокоманды, заданной параметром ulData. Этот параметр должен содержать дальний указатель на текстовую строку, содержащую макрокоманду. Перед использованием команды HELP_COMMAND необходимо, чтобы было запущено приложение winhelp.exe и чтобы нужный hlp-файл был открыт
HELP_CONTENTS0x0003 Отображение раздела, выполняющего роль оглавления справочной системы. Параметр ulData для этой команды должен быть равен нулю
HELP_CONTEXT0x0001 Отображение содержимого раздела, заданного номером контекста, определенным в разделе MAP файла проекта справочной системы. Через параметр ulData передается номер контекста отображаемого раздела
HELP_CONTEXTPOPUP0x0008 Отображение содержимого раздела, заданного номером контекста, во временном окне. Номер контекста должен быть определен в секции MAP файла проекта справочной системы и указан в параметре ulData
HELP_FORCEFILE0x0009 Если в момент вызова функции WinHelp с этим кодом операции отображается правильный hlp-файл, функция отрабатывает вхолостую. В противном случае отображается раздел оглавления, заданный в секции CONTENTS файла проекта справочной системы. Параметр ulData для этой команды должен быть равен нулю
HELP_HELPONHELP0x0004 Отображение раздела оглавления справочной системы, содержащей информацию об использовании приложения winhelp.exe. Параметр ulData должен быть равен нулю
HELP_INDEX0x0003 Синоним HELP_CONTEXT, использовался раньше в функции WinHelp для Windows версии 3.0
HELP_KEY0x0101 Отображение раздела справочной системы в соответствии с ключевым словом, передаваемым через параметр ulData. Этот параметр должен содержать дальний указатель на текстовую строку, содержащую ключевое слово
HELP_MULTIKEY0x0201 Аналогично предыдущему, но с использованием альтернативной таблицы ключей. Параметр ulData должен содержать дальний указатель на структуру MULTIKEYHELP, определяющую символ сноски для альтернативного ключа и ключевое слово
HELP_POPUPID0x0104 Отображение содержимого раздела, заданного номером контекста, во временном окне. Через параметр ulData передается номер контекста отображаемого раздела, определенный в разделе MAP файла проекта справочной системы.
HELP_PARTIALKEY0x0105 Аналогично HELP_KEY, однако отображаются разделы, для которых имеется неполное соответствие (несколько начальных символов ключевого слова)
HELP_QUIT0x0002 Завершение работы с hlp-файлом. Если ни одно другое приложение не выполняет никаких операций со справочной системой, приложение winhelp.exe завершает свою работу. Параметр ulData должен быть равен нулю
HELP_SETCONTENTS0x0005 Раздел, номер контекста которого указан в параметре ulData, будет выполнять функции оглавления справочной системы. Номер контекста раздела должен быть определен в секции MAP файла проекта справочной системы
HELP_SETINDEX0x0005 Синоним HELP_SETCONTEXT, использовался раньше в функции WinHelp для Windows версии 3.0
HELP_SETWINPOS0x0203 Изменение размеров и расположения окна приложения winhelp.exe в соответствии со значениями, определенными в структуре HELPWININFO, указатель на которую передается через параметр ulData

Структура MULTIKEYHELP определена в файле windows.h следующим образом:

Текстовая строка szKeyphrase должна быть закрыта двоичным нулем.

Структура HELPWININFO (и указатели на нее) определена также в файле windows.h:

Для стиля отображения окна вы можете использовать константы с префиксом имени SW:

Константа Описание
SW_HIDE Скрыть окно
SW_SHOWNORMAL Активизировать окно и отобразить его в нормальном состоянии (не минимизированном или максимизированном)
SW_SHOWMINIMIZED Минимизировать окно
SW_SHOWMAXIMIZED Максимизировать окно
SW_SHOWNOACTIVE Использовать для окна старые размеры и расположение. Те окна, которые были активными на момент вызова функции, по-прежнему остаются активными
SW_SHOW Активизировать и отобразить окно, используя текущие размеры и расположение
SW_MINIMIZE Минимизировать окно, активизировав другое, расположенное в самом низу (т. е. окно нижнего уровня вдоль оси Z)
SW_SHOWMINNOACTIVE Отобразить окно как пиктограмму. Те окна, которые были активными на момент вызова функции, по-прежнему остаются активными
SW_SHOWNA Отобразить окно в текущем состоянии. Те окна, которые были активными на момент вызова функции, по-прежнему остаются активными
SW_RESTORE Синоним SW_SHOWNORMAL

Справочная система HELPMORE.HLP

Для иллюстрации применения стандартных и дополнительных макрокоманд, функции WinHelp, а также малоизвестных и редко используемых, но полезных встроенных окон (Embedded Windows), мы создали справочную систему helpmore.hlp (рис. 4.21). При этом мы взяли за основу подробно описанную нами ранее справочную систему hlpfile.hlp.

4.21. Справочная система helpmore.hlp

Обратите внимание на окно Toolbar. В нем появилась новая кнопка «Calc». Если нажать на нее, будет запущено приложение calc.exe. Эта возможность реализована с помощью стандартных макрокоманд.

Выберите мышью строку «Вызов функции MsgBox из DLL». На экране появится сообщение (рис. 4.22).

4.22. Сообщение, которое выводится при помощи специально созданной макрокоманды

Для вывода такого сообщения мы расширили стандартный набор макрокоманд приложения winhelp.exe, добавив собственную макрокоманду MsgBox, реализованную как функцию библиотеки helpmore.dll.

Если выбрать строку «Вторичное окно», на экране появится еще одно окно, которое живет самостоятельно, вне зависимости от состояния главного окна приложения winhelp.exe (рис. 4.23).

4.23. Вторичное окно

Однако наибольший интерес представляет собой небольшое прямоугольное окно, внутри которого в цифровом виде отображается текущее время! Это так называемое встроенное окно. Мы использовали его для часов, однако в таком окне можно отображать все что угодно, например, анимацию или даже видеофильмы.

Вы можете сделать щелчок левой клавишей мыши внутри встроенного окна, при этом на экране появится диалоговая панель с предложением запустить «настоящие» часы clock.exe (рис. 4.24).

4.24. Пользователю предлагается запустить приложение clock.exe

В случае утвердительного ответа приложение clock.exe будет запущено, вслед за чем на экране появится раздел справочной системы с информацией о часах. Этот раздел будет показан во временном окне, и в нем также отображается текущее время (рис. 4.25). Таким образом, мы использовали временное окно еще и как нестандартное средство для организации гипертекстовой ссылки.

4.25. Гипертекстовая ссылка из встроенного окна

Для экспериментов со справочной системой hlpmore.hlp лучше всего использовать ее исходные тексты и другие файлы, расположенные на дискете, продаваемой вместе с книгой в каталоге hlpmore. Для тех, кто не смог приобрести дискету, мы приведем содержимое первого раздела справочной системы (раздела оглавления) и еще одного дополнительного раздела, которого нет в предыдущей описанной нами справочной системе helpfile.hlp.

На рис. 4.26 изображено оформление раздела оглавления.

4.26. Раздел содержания справочной системы hlpmore.hlp

Вызов созданной нами макрокоманды MsgBox выполняется следующим образом (в исходном *.rtf файле правая часть строки оформлена скрытым текстом):

Макрокоманда получает два параметра, первый из которых является внутренней глобальной переменной hwndApp (идентификатор главного окна приложения winhelp.exe), а второй представляет собой произвольную текстовую строку.

Для отображения содержимого во вторичном окне использована следующая строка:

Для создания встроенного окна использована следующая строка:

В этой строке оператор ewl указывает, что необходимо встроить окно и расположить его в левой части основного окна (аналогично bml). Существуют также операторы ewc и ewr, с помощью которых можно задать центрирование встроенного окна и выравнивание вправо, соответственно.

Встроенными окнами мы займемся ниже в отдельном разделе.

Если вы создаете исходный текст справочной системы hlpmore.hlp на базе файла hlpfile.rtf, описанного нами ранее, добавьте в него раздел с контекстом clock (рис. 4.27). Этот раздел будет появляться во временном окне в том случае, если вы щелкните левой клавишей мыши внутри встроенного окна.

4.27. Раздел с контекстом clock

Приведем полный список подстрочных ссылок, определенных в файле hlpmore.rtf:

В файле hlpmore.hpj находится файл проекта справочной системы (листинг 4.2).

Листинг 4.2. Файл hlpmore/hlpmore.hpj

В секции [OPTION] добавились строки copyright и icon. Первая из них предназначена для добавления сведений о разработчиках справочной системы в диалоговую панель, отображаемую при выборе строки «About Help. » из меню «Help» приложения winhelp.exe. Вторая указывает пиктограмму, в которую превращается главное окно winhelp.exe при его минимизации. С остальными строками этой секции вы уже знакомы.

В секции [WINDOWS] помимо основного окна main описано вторичное окно grwnd, на которое есть ссылка из раздела оглавления. Помимо цвета не сворачиваемой области для вторичного окна следует указать координаты верхнего левого угла, ширину и высоту.

Секция MAP определяет номера контекста, которые будут использованы для ссылки при вызове функции WinHelp.

В секции CONFIG вызываются три макрокоманды: BrowseButtons, CB и RR.

Макрокоманда BrowseButtons добавляет кнопки просмотра последовательностей логически связанных разделов.

Макрокоманда CB (полное имя CreateButton) добавляет в окно Toolbar новую кнопку с надписью «Calc», предназначенную для запуска калькулятора calc.exe.

Макрокоманда RR (полное имя RegisterRoutine) предназначена для регистрации макрокоманды MsgBox, определенной в DLL-библиотеке hlpmore.dll.

Приложение HELPMWH

Приложение HELPMWH демонстрирует приемы работы с функцией WinHelp и один из возможных способов организации получения контекстно-зависимой справки. Меню «Help» этого приложения (рис. 4.28) открывает доступ к содержимому справочной базы данных hlpmore.hlp, описанной в предыдущем разделе.

4.28. Меню ‘Help» приложения HELPMWH

До тех пор, пока не выделена какая-нибудь строка меню, клавиша не действует. Если же выделить любую строку любого меню, кроме «Help», с помощью клавиши можно будет получить контекстно-зависимую подсказку. Например, при выделении любой строки в меню «File» с последующим нажатием на клавишу на экране появится справка об использовании меню «File». Аналогичная операция в меню «Edit» или ‘View» приведет к отображению справочной информации об использовании этих меню.

Нажав на клавишу при выделенном меню «Help», вы увидите оглавление справочной системы.

Таким образом, доступ к справочной системе организован таким образом, что в зависимости от того, какое меню выделено, с помощью клавиши можно вызвать тот или иной раздел справочной системы.

Клавиша действует и во время отображения диалоговой панели, которая появляется на экране при выборе из меню «Help» нашего приложения строки «About. » (рис. 4.29).

4.29. Диалоговая панель, которая появляется при выборе из меню «Help» строки «About. «

Мы организовали контекстно-чувствительную подсказку таким образом, что нажав клавишу во время отображения диалоговой панели, мы попадаем в раздел оглавления, однако вы можете выбрать любой другой раздел по вашему усмотрению, немного изменив исходные тексты приложения.

Основной файл исходных текстов приведен в листинге 4.3.

Листинг 4.3. Файл hlpmore/helpmwh.cpp

В функции WinMain после обычной инициализации загружается таблица акселераторов, состоящая из одного определения. Комбинации клавиш ставится в соответствие сообщение CM_HELPINDEX, попадающее в функцию окна приложения при выборе строки «Index» из меню «Help». Используя эту комбинацию клавиш, пользователь сможет отобразить раздел оглавления справочной системы.

Функция окна обрабатывает сообщение WM_ENTERIDLE, которое и помогает нам организовать контекстно-зависимую подсказку.

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

Если сообщение WM_ENTERIDLE попало в функцию окна в результате отображения меню, параметр wParam этого сообщения содержит значение MSGF_MENU.

Если же указанное выше сообщение явилось результатом отображения диалоговой панели, параметр wParam содержит значение MSGF_DIALOGBOX.

В обоих случаях младшее слово параметра lParam содержит идентификатор окна (при отображении меню) или диалоговой панели (при отображении диалоговой панели).

Чем же нам может помочь сообщение WM_ENTERIDLE для организации контекстно-зависимой подсказки?

Именно по такому алгоритму и происходит обработка сообщения WM_COMMAND в нашем приложении.

Все необходимые константы определены в файле helpmwh.hpp (листинг 4.4).

Листинг 4.4. Файл hlpmore/helpmwh.hpp

Обратите внимание на константы, имя которых начинается с префикса IDN. Это номера контекста разделов справочной системы hlpmore.hlp, определенные в файле проекта hlpmore.hpj (листинг 4.2).

Ресурсы приложения (меню, пиктограмма, акселераторы и диалоговая панель) определены в файле helpmwh.rc (листинг 4.5).

Листинг 4.5. Файл hlpmore/helpmwh.rc

Файл определения модуля приложения HELPMWH представлен в листинге 4.6.

Листинг 4.6. Файл hlpmore/helpmwh.def

При создании справочной базы данных с использованием приложения winhelp.exe существует малоизвестная возможность создания встроенных окон, внутри которых разработчик справочной системы может делать практически все что угодно, за исключением ввода с клавиатуры (так как встроенное окно не может получить фокус ввода).

Процедура создания встроенных окон не описана в документации, поставляющейся вместе с SDK, однако необходимая информация есть в руководстве к утилите «Windows Help Authoring Guide for Word for Windows 2.0», которое поставляется на компакт-диске MSDN CD («Microsoft Developer Network. Development Library»).

Для чего можно использовать встроенное окно?

Можно придумать различные применения, например, следующие.

Отображение анимации и видеофильмов. Для увеличения привлекательности и наглядности справочной системы можно дополнить ее не только статическими графическими изображениями, но и видеофрагментами, например, в формате avi-файлов. Встроенное окно может содержать органы управления и окно просмотра видеофрагментов.

Изображение стандартных или нестандартных органов управления непосредственно в тексте раздела или в несворачиваемой области. Такие органы управления можно использовать как для организации гипертекстовых ссылок, так и для выполнения нестандартных функций, таких, как копирование файлов из справочной системы на диск и т. п.

Создание встроенного окна

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

Как и при вставке bmp-файлов, в зависимости от выбранной команды будет использован один из трех способов взаимного расположения текста и встроенного окна в окне раздела:

Команда Способ расположения
ewc Встроенное окно будет вставлено в строку как символ
ewl Встроенное окно выравнивается по левой границе, текст располагается справа
ewr Встроенное окно выравнивается по правой границе, текст располагается слева

Функция окна, соответствующая классу wndclass и определенная в библиотеке dllname будет получать и обрабатывать сообщения, предназначенные для встроенного окна.

Через параметр param можно передать любую текстовую строку, которая будет доступна на этапе создания встроенного окна при обработке сообщения WM_CREATE.

Сообщения для встроенного окна


Сообщение WM_CREATE

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

Когда функция встроенного окна получает сообщение WM_CREATE, параметр lParam содержит указатель на структуру CREATESTRUCT. Поле lpCreateParams этой структуры, в свою очередь, содержит указатель на структуру EWDATA следующего вида (не описана в файле windows.h):

Microsoft рекомендует проверить поля idMajVersion и idMinVersion (старший и младший номер версии справочной системы winhelp.exe) на равенство нулю. Если содержимое этих полей не равно нулю, работоспособность вашей DLL-библиотеки с этой версией winhelp.exe не гарантируется.

Поле szFileName содержит указатель на текстовую строку, содержащую путь к hlp-файлу. Если эта строка вам нужна, ее надо скопировать в отдельный буфер на этапе обработки сообщения WM_CREATE.

Через поле szAuthorData передается указатель на текстовую строку, указанную при вставке встроенного окна в раздел, т. е. строка param в команде ewl, ewc или ewr. Если эта строка нужна, ее также следует сохранить на этапе обработки сообщения WM_CREATE.

Через параметр hfs передается идентификатор файловой системы hlp-файла, который может пригодиться при выполнении операций с данными, описанными в секции BAGGAGE файла проекта справочной системы. Подробное рассмотрение этих операций выходит за рамки нашей книге, однако несколько слов по этому поводу мы скажем в конце текущей главы.

И, наконец, через параметры coFore и coBack передается основной и фоновый цвет главного окна winhelp.exe, соответственно. Вы можете использовать эти значения для раскраски создаваемого встроенного окна.

Так как отображение встроенного окна выполняется приложением winhelp.exe, ваше приложение не должно вызывать для этого окна функцию ShowWindow или назначать для него стиль WS_VISIBLE.

Сообщение EWM_QUERYSIZE

Функция встроенного окна получает сообщение EWM_QUERYSIZE (с кодом 0x706b) от приложения winhelp.exe.

Параметр wParam содержит идентификатор контекста отображения для окна. Через параметр lParam передается указатель на структуру POINT.

Основная задача обработчика сообщения EWM_QUERYSIZE заключается в том, чтобы записать в поля x и y структуры POINT, соответственно, ширину и высоту встроенного окна. Таким образом, встроенное окно должно сообщить приложению winhelp.exe свои размеры.

Сообщение EWM_RENDER

Процедура возврата текстового представления достаточно проста. Она заключается в том, что обработчик сообщения EWM_RENDER создает и фиксирует глобальный блок памяти. Затем он записывает в этот блок памяти текстовую строку представления содержимого встроенного окна, расфиксирует блок памяти и возвращает идентификатор блока памяти. Освобождение блока памяти выполняет приложение winhelp.exe, вам не нужно беспокоиться по этому поводу.

Если требуется вернуть графическое представление, параметр lParam сообщения EWM_RENDER содержит указатель на структуру следующего вида (не описана в файле windows.h):

Поле hdc этой структуры нужно использовать для создания битового изображения функцией CreateCompatibleBitmap.

Что же касается размеров битового изображения, их следует получить при помощи сообщения EWM_QUERYSIZE.

Сообщение EWM_ASKPALETTE

Приложение winhelp.exe посылает сообщение EWM_ASKPALETTE (с кодом 0x706c) функции встроенного окна для того чтобы получить информацию об используемой цветовой палитре.

Обработчик сообщения EWM_ASKPALETTE должен вернуть идентификатор палитры, используемой встроенным окном.

Сообщение EWM_FINDNEWPALETTE

Сообщение EWM_FINDNEWPALETTE (с кодом 0x706d) нигде не документировано, однако оно встречается в *.h файлах примеров, поставляемых в составе средств разработки справочных систем на базе Microsoft Windows Help.

Библиотека HELPMORE.DLL

В этом разделе мы приведем исходные тексты DLL-библиотеки, предназначенной для работы совместно со справочной системой helpmore.hlp, описанной нами ранее.

Основной файл исходного текста приведен в листинге 4.7.

Листинг 4.7. Файл hlpmore/hlpmore.cpp

Далее в исходном тексте DLL-библиотеки определена функция MsgBox, которая не имеет никакого отношения к встроенным окнам и используется как дополнительная макрокоманда, вызываемая при помощи ссылки из раздела оглавления. Задача функции MsgBox заключается в отображении сообщения, полученного ей через второй параметр.

Функция EWWndProc выполняет роль функции встроенного окна. Она обрабатывает все сообщения, поступающие от приложения winhelp.exe при создании, в процессе работы и при удалении встроенного окна.

Обработчик сообщения WM_CREATE копирует строку параметров, добавляет к окну рамку и создает таймер с периодом работы 1 сек.

Каждую секунду от таймера в функцию встроенного окна приходит сообщение WM_TIMER. Обработка этого сообщения заключается в полной перерисовке содержимого встроенного окна.

Обработчик сообщения WM_PAINT вызывается при создании окна и затем периодически, раз в секунду. Он рисует в центре окна текстовую строку текущего времени.

Обработчик сообщения EWM_QUERYSIZE возвращает размер окна, определяя его на основании метрик фиксированного системного шрифта.

Как мы уже говорили, когда приложению winhelp.exe требуется получить текстовое или графическое представление содержимого встроенного окна, оно посылает функции окна сообщение EWM_RENDER.

При запросе текстового представления наше приложение предоставляет идентификатор блока, содержащего текстовую строку, в которой записано текущее время. При запросе графического представления приложение создает битовое изображение и рисует на нем тот же самый текст, обводя его рамкой по периметру окна.

Все выполняемые при этом действия были описаны нами ранее в предыдущих томах «Библиотеки системного программиста», поэтому они должны быть понятны без дополнительных объяснений.

Обратим ваше внимание на обработчик сообщения WM_LBUTTONDOWN.

Этот обработчик был определен для обеспечения возможности использования встроенного окна для организации чувствительной точки (в исходном тексте раздела встроенное окно нельзя использовать для организации ссылки или запуска макрокоманд).

Когда пользователь расположит курсор мыши над поверхностью встроенного окна и нажмет левую клавишу мыши, функция встроенного окна получит обычное сообщение WM_LBUTTONDOWN. Обработчик этого сообщения выводит диалоговую панель с предложением запустить приложение clock.exe, при необходимости запускает это приложение, а затем вызывает функцию WinHelp.

Функция WinHelp используется для организации гипертекстовой ссылки на раздел с номером контекста IDN_CLOCK. Раздел будет отображен во временном окне.

Идентификаторы констант, а также все необходимые структуры данных определены в файле hlpmore.h (листинг 4.8).

Листинг 4.8. Файл hlpmore/hlpmore.h

Файл описания ресурсов содержит ссылку на файл hlpmore.cur (листинг 4.9). Файл hlpmore.cur содержит курсор, который используется для встроенного окна.

Листинг 4.9. Файл hlpmore/hlpmore.rc

Файл определения модуля DLL-библиотеки hlpmore.dll приведен в листинге 4.10.

Листинг 4.10. Файл hlpmore/hlpmore.def

Возможности приложения winhelp.exe слишком велики, чтобы их можно было описать полностью, к тому же они не все документированы. Авторы этой книги знают о существовании полного описания системы Windows Help, предназначенной только для внутреннего пользования в Microsoft, состоящего из сотен страниц. В этом разделе мы очень кратко расскажем еще о нескольких возможностях.

Глобальные переменные

Если вы создаете собственные макрокоманды (как функции DLL-библиотеки), вам может пригодиться информация о внутренних переменных winhelp.exe. Эти переменные можно передавать как параметры стандартным и созданным вами макрокомандам.

Приведем список внутренних переменных.

Имя переменной Тип Описание
hwndApp U Идентификатор главного окна приложения winhelp.exe. Можно пользоваться только во время выполнения функции, вызываемой из DLL-библиотеки
hwndContext U Идентификатор текущего активного окна приложения winhelp.exe
qchPath S Путь к hlp-файлу
qError S Дальний указатель на структуру, содержащую информацию об ошибке, возникшей при последнем обращении к winhelp.exe
lTopicNo U Номер раздела
hfs U Идентификатор файловой системы для текущего hlp-файла
coForeground U Основной цвет окна
coBackground U Фоновый цвет окна

Секция BAGGAGE

Разработчик справочной системы может добавить в hlp-файл (в его внутреннюю файловую систему) произвольные файлы данных, описав их в секции BAGGAGE файла проекта справочной системы. Это могут быть, например, видео- или звуковые данные, графические изображения и т. п.

Источник

Операционные системы и программное обеспечение