Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций по дисциплине Объектно-ориентирован...doc
Скачиваний:
34
Добавлен:
01.07.2025
Размер:
14 Мб
Скачать
☆

3. Компиляция, тестирование и связывание Help-файла с программой

Компиляция и тестирование справочной службы не составляют проблемы: с помощью MS HW создайте (или загрузите) проектный файл и щелкните на кнопке Save and Compile инструментальной панели. После этого появляется окно, показанное на рис. 102.

При компиляции утилита MS HW сворачивает свое окно и вновь раскрывает его после завершения работы компилятора, если установлен флажок Minimize window while compiling. После окончания компиляции в окне утилиты будут показаны сообщения компилятора. Если компилятор обнаружил ошибки, он сообщает о них, причем некритические ошибки сопровождаются предупреждениями (warnings) и замечаниями (notes), а критические прерывают компиляцию.

Рис. 102. Окно запуска компилятора

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

  • Contents File — тестирует файл содержания;

  • Close All Help — закрывает все ранее открытые Help-файлы;

  • Send a macro — посылает в WinHelp нужную макрокоманду;

  • WinHelp API — вызывает нужный раздел справочной службы по присвоенному ему в секции [MAP] числовому идентификатору.

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

Связь с программой реализуется с помощью свойств HelpContext видимых компонентов, в которые следует поместить числовые идентификаторы нужных разделов справочной службы так, как они определены в секции [MAP]. Кроме того, в свойство Application.HelpFile нужно поместить имя Help-файла. Обычно эта связь устанавливается в обработчике события OnCreat главной формы программы. После такой настройки пользователь программы сможет с помощью клавиши F1 получить контекстно-зависимую справку, так как при нажатии клавиши F1 автоматически вызывается раздел, числовой идентификатор которого помещен в свойство НеlpContext компонента с фокусом ввода. Если свойство НеlpContext компонента с фокусом ввода содержит 0, вызывается раздел, указанный в свойстве НеlpContext его владельца, а если и у того это свойство не определено, используется свойство НеlpContext активной формы (если во всей цепочке владельцев, включая активную форму, свойство НеlpContext не определено, нажатие клавиши F1 игнорируется).

4. Макрокоманды WinHelp

Справочная служба 32-разрядных версий Windows — WinHelp — имеет встроенные макрокоманды, которые доступны из справочной службы программы. Макрокоманды могут выполняться в следующих случаях:

  • при открытии справочного файла (определяются в секции [CONFIG]);

  • при открытии окна с разделом (определяются сноской !);

  • при выборе ключевого слова (определяются на вкладке Macros окна Options).

В этом разделе описываются некоторые часто используемые макрокоманды WinHelp, для удобства разделенные но функциональному назначению. Полное описание всех макрокоманд вы найдете в справочной службе MS HW. Формат определения макрокоманд соответствует формату определения функций в языке С++. Если макрокоманда не имеет параметров обращения, за ее именем требуется задать пару пустых скобок так, как это указано в описании макрокоманд в табл. 76.

Таблица 76.

Макрокоманды WinHelp

Макрокоманда

Назначение

Управление инструментальными кнопками

Back ()

Соответствует щелчку на кнопке Назад. Идентификатор кнопки (ID) — btn_back

BackFlush()

Очищает список предыдущих разделов кнопки

Назад

BrowsButtons()

Вставляет кнопки последовательного просмотра связанных разделов

ChangeButtonBuilding(ID. macro)

Для кнопки с идентификатором ID определяет макрокоманду macro

ChangeEnable(lD. macro)

То же, что ChangeButtonBihlding

CreateButton(ID, title, macro)

Создает кнопку с идентификатором ID и надписью title

DestroyButton(ID)

Удаляет кнопку с идентификатором ID

DisableButton(ID)

Запрещает выбор кнопки с идентификатором ID

EnableButton(ID)

Разрешает выбор кнопки с идентификатором ID

Contents()

Соответствует щелчку на кнопке Содержание. Идентификатор кнопки — btn_contents

1

2

Find()

Соответствует щелчку на кнопке Поиск. Идентификатор кнопки — btn__find

Finder()

Соответствует щелчку на кнопке Разделы. Идентификатор кнопки — btn_topics

Menu ()

Соответствует щелчку на кнопке Параметры. Идентификатор кнопки — btn_nenu

Next()

Соответствует щелчку на кнопке Вперед. Идентификатор кнопки — btn_next

Prev()

Соответствует щелчку на кнопке Назад. Идентификатор кнопки — btn_previous

Print()

Соответствует щелчку на кнопке Печать. Идентификатор кнопки — btn_print

Search()

Соответствует щелчку на кнопке Указатель. Идентификатор кнопки — btn_search

Макрокоманды переходов

Alink(keyword[. type[. ID[, winname]]])

Переход по ключевому слову keyword из дополнительной таблицы слов на раздел с идентификатором ID. winname — тип окна для показа раздела. Параметр type определяет дополнительное действие (см. ниже)

JumpContents(fi1ename)

Переход на умалчиваемый раздел, определенный для файла filename

JumpContext([[fi1ename>]winname. ]NID)

Переход на раздел с числовым идентификатором NID, который указан в секции [MАР]

JumpHash ([[filename>]winname. ]HID)

Переход на раздел с внутренним числовым идентификатором НID (см. ниже)

JumpID ([[filename>]winname, ]ID)

Переход на раздел с идентификатором ID

JumpKeyword([filename. ]keyword)

Переход на раздел по ключевому слову keyword в файле filename

1

2

KLink(keyword[.type[. ID[, winname]]])

Переход по ключевому слову keyword на раздел с идентификатором ID. winname —тип окна для показа раздела. Параметр type определяет дополнительное действие (см. ниже)

PopupContext([filename.]NID)

Переход на раздел с числовым идентификатором MID, который указан в секции [MAP]. Показывает раздел в окне пояснений

PopupHash([fi]ename. ]HID)

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

PopupID([filename.]ID)

Переход на раздел с идентификатором ID. Показывает раздел в окне пояснений

SetContentst(filename. ID)

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

TestALInk("keyword")

Выполняет макрокоманду ALink для ключевого слова keyword и возвращает 1, если переход возможен, или 0, если ни один раздел не найден

TestKLinkt"keyword")

Выполняет макрокоманду KLink для ключевого слова keyword и возвращает 1, если переход возможен, или 0, если ни один раздел не найден

1

2

UpdateWindow([fi1ename>]winname, ID)

То же, что JumpID, но активным остается прежнее окно

Работа с меню

About()

Эквивалент выбора команды Справка ► Версия

AppendltemCmenuID. itemlD. Title, macro)

Вставляет команду с именем Title в подменю с идентификатором nienuID и связывает с ней макрокоманду macro. itemID — идентификатор новой команды

Annotated ()

Эквивалент выбора команды Правка ► Заметки

BookmarkDefine()

Эквивалент выбора команды Закладка ► Определить

ChangeltemBInding(itemID. macro)

Назначает команде с идентификатором itemlD макрокоманду macro

Checkltem(itemlD)

Помещает значок отметки (флажок) рядом с командой itemlD

CopyTopic()

Эквивалент выбора команды Правка ► Копировать

Deleteltem(itemlD)

Удаляет команду itemlD

Disableltem(itemlD)

Делает недоступной команду it em Id

Enableltem(itemlD)

Делает доступной команду itemld

Exit()

Эквивалент выбора команды Файл ► Выход

FileOpen()

Эквивалент выбора команды Файл ► Открыть

FloatingMenu()

Вывод контекстного меню (эквивалент щелчка правой кнопкой мыши)

1

2

HelpOnTop()

Эквивалент выбора команды

Histopy()

Параметры > Размещение окна ► Поверх остальных

InsertltemCmenuID, itemlD. Title. macro, position)

Эквивалент выбора команды Параметры ► Показать окно хронологии

ResetMenuC)

Вставляет элемент меню iteml() в меню roenuID Устанавливает умалчиваемое меню

Команды условного переходе

IFThen(macro, macrol)

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

IFThenElseCmacro. macrol. macro2)

Если макрокоманда macro возвращает 1, выполняется макрокоманда macrol, иначе выполняется макрокоманда mасго2

Not(macro)

Инвертирует результат, возвращаемый макрокомандой macro

Параметр type в командах поиска AL1 nk и KL1 nk может иметь несколько возможных значений, разделенных пробелом:

0 — выводится окно с названиями найденных разделов;

X — если найден только один раздел, он показывается в справочном окне;

2 — если разделы находятся в разных файлах, в окне поиска указываются имена файлов вместе с названиями разделов;

4 — если найден хотя бы один раздел, макрокоманда возвращает 1.

Внутренний числовой идентификатор (см. выше описание команд JumpHash и PopupHash) создается компилятором по идентификатору раздела. Его можно увидеть в окне File > Report после щелчка на кнопке Report при установленном переключателе Hash number.

Контрольные вопросы:

  1. Где разрабатывается проектный файл?

  2. Перечислите этапы разработки проектного файла.

  3. Для чего нужен файл содержания?

  4. Как создать файл содержания?

Самостоятельная работа: Написать конспект на тему «Особенности создания справочной системы, работающей на любых версиях Windows».

Рекомендации по выполнению самостоятельной работы:

При написании конспекта необходимо использовать не менее трех литературных источников. Объем конспекта 2-3 страницы печатного текста. Оформление конспекта должно соответствовать нормам ГОСТ 32.

Рекомендуемая литература: 1.1, 1.6, 1.7, 1.10.