Использование справки в VB

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

Подключение справки через Windows-API

Файл Windows-справки, естественно можно подключить через Windows-API. Для этого служит функция WinHelp, расположенная в библиотеке User32. Объявляется эта функция следующим образом:

Declare Function WinHelp Lib "user32" Alias "WinHelpA" ( _
  ByVal hwnd As Long, _
  ByVal lpHelpFile As String, _
  ByVal wCommand As Long, _
  ByVal dwData As Long) As Long
'Не забывайте, что если вы объявляете функцию внутри формы,
'необходимо добавлять Private.

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

  • hwnd - Handle формы, в VB его можно получить "Me.hWnd"
  • lpHelpFile-Понятно, что это имя файла справки, путь должен быть указан точно.
  • dwData - Значение этого параметра зависит от значения wCommand
  • wCommand - Параметр определяющий, что именно будет выведено на экран

Именно wCommand управляет выводом справки. Его значения могут быть различны, но в основном они укладываются в таблицу:
HELP_CONTEXT = &H1 Выводит раздел, номер которого указан в dwData
HELP_QUIT = &H2 Закрывает указанный Help-файл
HELP_INDEX = &H3 Выводит предметный указатель справочного файла
HELP_FINDER = &HB Выводит окно Help Topics и активирует вкладку выбранную в прошлый раз.
HELP_TAB = &HF Выводит окно Help Topics и активирует вкладку определённую в dwData(0 - Contents, -2 - Index, -1 - Find).
HELP_CONTENTS = &H3& Выводит раздел Contents. Необходима для совместимости с болле ранними версиями Help-файлов
HELP_HELPONHELP = &H4 Выводит справку о справке.
HELP_SETINDEX = &H5 Устанавдивает текущий индекс, для многоиндексовой справочной системы.
HELP_SETCONTENTS = &H5& Делает раздел, указанный в dwData, оглавлением(Contents).
HELP_CONTEXTPOPUP = &H8& Отображает раздел идентифицированный номером контекста.
HELP_FORCEFILE = &H9& Создает справочный файл, в котором текст отображается лишь одним шрифтом.
HELP_HELPKEY = &H101& Отображает справку по конкретному ключевому слову.
HELP_COMMAND = &H102& Отображает справку по конкретной команде.
HELP_PARTIALKEY = &H105& Вызывает систему поиска в Windows Help.

Прдключение справки через Common Dialog

Кроме Windows API можно использовать элемент управления Common Dialog. Он позволяет без особых усилий работать с файлами справки.
Работа с ним не требует никаих объяснений, достаточно только добавить на форму Common Dialog (Если его нет в инструментарии(ToolBox) нажмите CTRL+T, или выберите Components в меню Project, и поищите в списке), присвоить ему имя cdlCommon, и скопировать в форму следующий код:

Option Explicit

Private Sub Form_Load()
cdlCommon.HelpFile = "Help\vb5.hlp"
End Sub

Private Sub Form_MouseMove( _
Button As Integer, _
Shift As Integer, _
X As Single, _
Y As Single)

If Button = 1 Then
cdlCommon.HelpCommand = cdlHelpHelpOnHelp
cdlCommon.ShowHelp
End If
If Button = 2 Then
cdlCommon.HelpCommand = cdlHelpContext
cdlCommon.HelpContext = 700
cdlCommon.ShowHelp
End If
End Sub

К слову скажу, что вместо констант Common Dialog, можно использовать конcтанты из таблицы приведённой выше.

Использование свойства HelpContextID

Последним, рассмотренным мной способом подключения файла справки к программе на VB будет использование свойства HelpContextID. Само по себе это свойство отвечает за вывод определённого раздела справки при нажатии клавиши F1, когда в фокусе находится определённый элемент. Но с помощью нехитрого трюка можно "нажимать" F1 программно. Всё объяснит следующий код. Просто вставьте его в пустую форму:

Private Sub Form_Click()
Me.HelpContextID = 700
SendKeys "{F1}"
End Sub

Private Sub Form_Load()
App.HelpFile = "help\vb5.hlp"
End Sub

Итак мы рассмотрели три способа подключения файла справки к программе на VB. Добавлю лишь, что весь приведённый здесь код работает на моём компьютере, в Microsoft Visual Basic 5.0 Enterprise Edition .


Евгений

Сайт управляется системой uCoz