Yuri Volkov. Software developer. Moscow.
Section: developing tools. Report level: 3 - specific technology
In the report the experience on the commercial application development was presented. As a help-system the Microsoft® HTML Help was used. The results are presented as demonstratiuon of the working application. (As an example the application from the previous report "The usage of the DirectX with Visual Basic 5.0" was presented).
The access to the HTML Help executable was made on the base of the API. The third side components were not used
The usage of the HTML Help gave possibility to create the reference documentation forms in the hyper text format, to generate content and alphabetical index and to obtain the search capabilities for full text of the help documents. All files where compiled to one with .chm extention.
The Microsoft® HTML Help is the set of the tools that are used to create the full featured help system in the HTML format. These tools make possible to group help documents and to perform the search in the Internet
HTML Help is the suuccessor of the WinHelp. The calls to the HTML Help from the applications (API) and the base tool for the development (HTML Help Workshop) is similar to that for the WinHelp. There are an utility for the converting WinHelp projects to the HTML Help.
It is very convinient that the help documents can be published in the Internet too. The compiling of the project creates the one .chm file, but this file can be converted to the set of the HTML files. Some functions, as search, for example, are working for the single compliled .chm file only.
The access th HYML Help is possible through the Internet. However, in the case of the compiled file it should be downloaded as a whole before the use of the first page.
According to Microsoftr idea the HTML Help does not require the browser, but by the 1998 May the distribution pack for the HTML Help without browser was under development. See http://www.microsoft.com/workshop/author/htmlhelp/.
The examples of the HTML Help usage are the Internet Explorer 4.0 and it's components. Look for the files with .chm extension.
One of the examples of the creating the content for the document see at the proccedimgs of the previous conference (DevCon97)
The context help can be called by the use of one HTML Help API fucntion:
Private Declare Function HtmlHelp Lib "hhctrl.ocx" Alias "HtmlHelpA" ( ByVal hwndCaller As Long, ByVal pszFile As String, ByVal uCommand As Long, ByVal dwData As Any) As Long
In the simple case to call the page by the name only can use the commands:
Const HH_DISPLAY_TOPIC As Long = 0 Dim Hwnd As Long Hwnd = HtmlHelp( MyForm.hwnd, "TkmW.chm", HH_DISPLAY_TOPIC, "Welcome.htm")
To find the context help by the HelpContextID attribute of the currently active control you can use the following lines (the one piece of the code for all program required). This code is called after pressing of the F1-key:
Const HH_HELP_CONTEXT As Long = &HF Dim frm1 As Form ' active form Dim ctl1 As Control ' active control Dim lngContextID As Long Dim mhWnd As Long On Error Resume Next Set frm1 = Screen.ActiveForm If Err = 0 Then Set ctl1 = frm1.ActiveControl If Err <> 0 Then Set ctl1 = Nothing If Not (ctl1 Is Nothing) Then lngContextID = ctl1.HelpContextID End If If lngContextID = 0 Then ' If there are no identifier for the context help for the control ' use the context help for the form lngContextID = frm1.HelpContextID End If mhWnd = HtmlHelp(frm1.hwnd, "TkmW.chm", HH_HELP_CONTEXT, lngContextID) End If
The identifiers of the context are in the 3 places in the project of VB and HTML Help. Start their names with IDH_. To simplify the future changes it is convinient to create 3 files:
1. HelpMap.bas - contains the constant definitions and should be included to the VB-project(TkmW.vbp, for example). The example of the file content:
Attribute VB_Name = "HelpMap" Global Const IDH_About = 10 Global Const IDH_Plasma = 4 Global Const IDH_PlasmaEdit = IDH_Plasma Global Const IDH_Welcome = 11
2. HelpMap.h - the same definitions for the C-project. This file is to include to the [MAP] section of the HTML Help project( TkmW.hhp ):
[MAP] #include HelpMap.h
The content of the HelpMap.h:
#define IDH_About 10 #define IDH_Plasma 4 #define IDH_PlasmaEdit 4 #define IDH_Welcome 11
3. HelpAlias.h - connects the conterxt identifiers and the file names of the HTML pages. This file is included to the [ALIAS] section of the HTML Help project( TkmW.hhp ):
[ALIAS] #include HelpAlias.h
The HelpAlias.h content:
IDH_About = About.htm IDH_Plasma = Plasma.htm IDH_PlasmaEdit = Plasma.htm IDH_Welcome = Welcome.htm
HTML Help Workshop gives possibility to find some errors in the HelpMap.h and HelpAlias.h. The support of the compliance between HelpMap.bas and HelpMap.h is the author responcibility. The utility for the automated converting of the first to second may be of help.