Visual Basic справка
Наверняка любой программист хочет, чтобы его программы были удобныи понятны для любого пользователя, даже для того кто пока ещё долгоцелится мышкой в оконный крестик. Этого можно добиться используя 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 ExplicitPrivate Sub Form_Load()cdlCommon.HelpFile = "Help/vb5.hlp"End SubPrivate Sub Form_MouseMove( _Button As Integer, _Shift As Integer, _X As Single, _Y As Single)If Button = 1 ThencdlCommon.HelpCommand = cdlHelpHelpOnHelpcdlCommon.ShowHelpEnd IfIf Button = 2 ThencdlCommon.HelpCommand = cdlHelpContextcdlCommon.HelpContext = 700cdlCommon.ShowHelpEnd IfEnd Sub
К слову скажу, что вместо констант Common Dialog, можно использоватьконcтанты из таблицы приведённой выше.
Использование свойства HelpContextID
Последним, рассмотренным мной способом подключения файла справки к программе на VB будетиспользование свойства HelpContextID. Само по себе это свойство отвечает за вывод определённогораздела справки при нажатии клавиши F1, когда в фокусе находится определённый элемент. Нос помощью нехитрого трюка можно "нажимать" F1 программно. Всё объяснит следующий код. Простовставьте его в пустую форму:
Private Sub Form_Click()Me.HelpContextID = 700SendKeys "{F1}"End SubPrivate Sub Form_Load()App.HelpFile = "help/vb5.hlp"End Sub
Итак мы рассмотрели три способа подключения файла справки к программе на VB. Добавлю лишь, что весь приведённый здесь код работает на моём компьютере, в Microsoft Visual Basic5.0 Enterprise Edition .