HTML Help‎ > ‎

HTML Help Tips 'n Tricks

Updated March 19, 2003

RoboHELP MVP Rick Stone has developed a set of Tips 'n Tricks help files for HTML Help, with additional information on RoboHTML. He covers everything from adding notes to email tricks and Information Types. You can download this great resource by clicking here.


Fix For Error HHC6003 (itircl.dll)

Updated March 19, 2003

I'd pulled this particular tip when I built the new site because of a lack of any discussion about the problem, and instantly heard about it. People were emailing Felix (the server admin of mvps.org), Karl Peterson forwarded an email from someone who was looking for the page ... even Rhonda Bracey gave me grief about it! Sheesh! :-)

One of the most annoying problems in HTML Help is an error message which states "HHC6003: The file itircl.dll has not been registered correctly". I had brought this to Ralph Walden's attention sometime in 1998, and he said to have the individual re-register itcc.dll on the system, as there is some interaction that needs to occur between the two files that isn't occurring. Since then, I've assisted about a dozen people with this problem in this manner, explaining what Ralph told me.

One thing that's quite interesting is that, in some cases, itcc.dll isn't even on the system. I've brought this to the HTML Help development team's attention, and while I was told they've heard of the problem, they've yet to be able to duplicate it. Also, up until recently, every time I've heard of the problem, the system's been running NT. However, I've received an email about someone who had to use this fix on a Win98 SE system (thanks, Stuart!), so this is no longer true.

Ok, on to the fix:

Look for itcc.dll on your system. If it's there, register it using:

regsvr32 c:\windows\system\itcc.dll

Make sure you substitute the correct path for the location of itcc.dll on your system.

However, if itcc.dll is not on the system at all, you can download a copy by clicking here (it's about 75k zipped). Unzip it to either c:\windows\system or c:\winnnt\system32, whichever is appropriate for your system.  You can then get it registered using the same process as above and HTML Help should work fine once again.

 

Help File Location Tips

July 10, 2000

I question that's starting to come up quite often is "Where do I put my help file?" App.Path is an excellent choice, but make sure you reference this in code in your startup procedures somewhere vs. the VB IDE Project Properties dialog. The code would look something like:

Private Sub Form_Load()
App.HelpFile = App.Path & "\myhelp.chm"
End Sub

In this manner, you end up with a relative path, and the app and help file can end up anywhere on the system.

Another thing you could do is modify your installation so it creates a registry entry for an HTML Help file in:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\HTML Help for HTML Help

... or, for WinHelp:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Help

Once you do this, the correct help engine will look in this key for the path to your help file, and you can use the following code with no trouble:

Private Sub Form_Load()
App.HelpFile = "myhelp.chm"
End Sub

It's quite difficult to modify the code for the Visual Basic P&DW to get this to happen in the right place. Because of these problems, I'm using Wise InstallBuilder, which is much easier.

 

More On Converting WinHelp To HTML Help

May 2, 2000

Here's another fix Paul O'Rear worked up to help fix these HLP to HTML Help convertor errors people keep getting despite the DLLs being registered. You can pick up the fix on his site:

HLP to HTML Help Convertor Fixer - Despite the problems that HTML Help DLL Registrar attempted to fix (various DLL components of the HTML Help Workshop not being registered properly) it now appears that the infamous message that frequently gets displayed - "The DLLs necessary to convert RTF to HTML have not been installed correctly. Reinstall HTML Help Workshop and try again."
is somewhat bogus. Despite DLLs being registered correctly, the convertor DLLs will bring up this message whenever they come up against something they don't understand in the source files. One such thing that was discovered recently is the usage of an RTF token (\*) that indicates non-essential text to an RTF reader. One non-Word based Help Authoring Tool (HAT) emitted RTF that used this token along with the \footnote token which is absolutely essential for WinHelp source files, but the convertor inadvertently appeared to ignore the \footnote token when preceded by the \* token. In any case, this little applet scans a WinHelp project file (.hpj) for a project's RTF files, backs up the RTF files, and then fixes the RTF source files by simply deleting the \* token when used in coordination with the \footnote token.

 

Error Message: Unsafe Information and an ActiveX Control

March 8, 2000

This is probably the most common problem in HTML Help. This thing pops up so often, I'm surprised the solution in MSDN isn't more prominent than it is.

 

Clean HTML From Microsoft Word?

Updated March 4, 2003
Thanks to Daan van Osch of Isah ERP Software, The Netherlands, for the update info.

One of my own pet peeves is that HTML generated from Microsoft Word is, for want of a better word ... trashed. There are extraneous markup everywhere, and the HTML Help compiler just kicks it back. However, there's hope! Fellow HTML Help MVP Jeff Hall posted the following to the WinHlp-L list today:

Just in case you have the need for HTML without the new Word/XML clutter...

These are references to the MS Word 2000 HTML "Cleanup" filter which, remarkably works from DOS command line options as well as from within Word. See http://office.microsoft.com/downloads/2000/Msohtmf2.aspx
and http://office.microsoft.com/Assistance/2000/wDosPeeler.aspx.

Ray Dembeck replied:

Great tip. When the filter is run from the DOS prompt as:

filter -a -b -c -l -m -r -s input.htm output.htm

the output has almost no extraneous markup in my brief testing. The files created via Save as Compact HTML in Word have much more useless information in them. I've been looking for this for quite a while.

A lot of folks have, Ray, including myself. Thanks, Jeff!

 

HTML Help vs. WinCE HTML-based Help

January 7, 2000 (revised July 1, 2003)

A question asked on occasion is whether or not HTML Help files can be viewed on Windows CE. Here's the scoop:

The minimum requirements for the viewing of HTML Help (*.chm) files is Internet Explorer 3 or higher (IE4 is better) and that the HTML Help viewer files are also installed by running hhupd.exe on the target machine. Unfortunately, this combination isn't installable on WinCE.

Help for Windows CE consists of Peghelp.exe and an HTML rendering application that enables a user to display HTML-based Help files. The HTML files for Peghelp.exe have the suffix .htp, but they're the same as files having a suffix .htm or .html, just with a different suffix.

There's a solution to be had, though. Both the HTML Help Workshop and HTML Help system architect Ralph Walden's KeyTools are able to decompile HTML Help files, as are some commercial help authoring tools, such asRoboHelp. This restores the raw HTML, contents (*.hhc) and index (*.hhk) files. Using these items, you can create HTML-based help for WinCE using the articles that start here (click Show TOC at the top of the page, and then Sync TOC to see the articles in that section). You can also use some of the commercial apps, such as ForeHelp, to put together the WinCE help from the raw HTML files.

 

Popup Files and the HHP File

December 29, 1999 (revised January 28, 2000)

There's definitely some confusion regarding how popup files are to be listed in the HHP file. KB article Q192118:Use HTML Help Text Popup Windows in VBasic Program kinda helps, but it still misses the mark for some reason (which is seriously annoying since I contributed to the article ... <g> ). Let's see what we can do here:

There are two ways to list popup files in the HHP file. The first is used in a lot of cases where the developer and/or help author can't quite get the recommended method to work. I've used it quite often myself, and those of you who have downloaded the earlier sample application saw it in action, and may have also seen it described in the original tutorial.

The syntax that works as a bare minimum is:

.topic contextinteger (Carriage Return)
topictext


The hard carriage return is necessary for this to work.

This is what happens when it's assumed you can't map What's This help topics like the others. Here's an example of such a topic (I always start these context integers with 20000 and increment by 10):

.topic 20000
Enter the patron's barcode here. If the barcode is damaged, just type the number in the box.

These topics then have no mapping involved, so the text file is merely listed in both the files and popups sections of the HHP file:

[FILES]
; <other files listed here>
library.txt

[TEXT POPUPS]
library.txt

This does work. However, Ralph Walden, HTML Help system architect, totally disagrees with the validity of this method, and there are a couple of reasons for this. First of all, adding the text file to the files section of the HHP increases the size of the resulting CHM proportionally. Also, this totally negates any possibility of finding a popup in a merged set of CHM's.

The correct method is this ... the syntax for the text popup is:

.topic contextstring (carriage return)
topictext

If you'll open the text popup file for the sample application (library.txt), you'll find the first topic looks like this:

.topic IDH_PATRON_BARCODE
Enter the patron's barcode here. If the barcode is damaged, just type the number in the box.

Opening the map file (library.h) reveals this context string is mapped to the context integer of 20000:

#define IDH_PATRON_BARCODE 20000

Both the text popup and map file are then listed in the [TEXT POPUPS] section of the HTML Help project file:

[TEXT POPUPS]
Library.txt
library.h

That's really all there is to it. From here, you can either use the native method for What's This in VB6 to display the popup, or use the HHDisplayPopup method of the HTML Help class module in either Visual Basic 5 or 6. Using the latter is decidedly more interesting though ...

One key point to the native method for What's This in VB6 to display popups is that the HelpFile property of the Application object must include the text popup file, as in:

App.HelpFile = App.Path & "\library.chm::/library.txt"

This makes it rather imperative to use a method other than the HelpFile property of the Application object to call the help file if both topics and popups are going to be used in the same Visual Basic application.


Multiple Languages In HTML Help 1.3

December 15, 1999

A week or so ago, the following question was posted to one of the public Internet Explorer 5.5 beta newsgroups:

Subject: IE 5.5 Question, multiple copies of HHCTRLUI.DLL
"I installed IE 5.5, and it installed multiple copies of HHCTRLUI.DLL in 28 folders under folder 'MUI'. Does anyone know what these files are for and if they are needed?"

If you'll take a look at the HTML Help Installation and Update Package page, you'll see that there are 28 language versions of hhupd.exe listed for HTML Help version 1.22, one for each language.  HTML Help 1.3, which ships with Internet Explorer 5.5, is set up for both the multiple language operating system Windows 2000, and the multiple language Office 2000. Because of this, HTML Help 1.3 ships with all 28 language versions.  Now, it should only install those language versions you've selected in your system.  For example, I only have 3 versions of HHCTRLUI.DLL on my machine.  This is likely due to my having three English versions (UK, Australia, and Canada) installed in my Office 2000 installation on Windows 98 SE.

Remember: Installing Internet Explorer 5.5 will only update HTML Help if hhctrl.ocx is earlier than the version that shipped with IE 5.00 (4.73.8412).


Adding The MSDN Menu To A CHM

Open your HHP in NotePad and look at the window definition(s). The layout is:

Window Definition =

Title Bar Text,
Tabel of Contents File,
Index File,
Default File,
Home Button File,
Jump 1 Button URL,
Jump 1 Button Name,
Jump 2 Button URL,
Jump 2 Button Name,
Navigation Pane Style (values see below),
Navigation Pane Width,
Buttons (see below),
Initial Position [Left, Top, Right, Bottom],
Style Flags (see below),
Extended Style Flags (see below),
Flag Navigation Pane initially closed (1 = closed),
??,
Default Pane (values see below),
??,
??

The MSDN menu is added by adding 0x10000 to the Navigation Pane Style parameter. Remember, this is hexadecimal math, so if this is position is somehow 0x90000 to begin with and you add 0x10000, it becomes 0xA0000. Of course, all the other characters remain the same.

 

Adding The Font Button To A CHM

[updated February 28, 2000]

This is actually called the Zoom button for some reason. I have yet to figure out why...

In your HHP file, the window definitions are laid out as:

Window Definition =

Title Bar Text,
Tabel of Contents File,
Index File,
Default File,
Home Button File,
Jump 1 Button URL,
Jump 1 Button Name,
Jump 2 Button URL,
Jump 2 Button Name,
Navigation Pane Style,
Navigation Pane Width,
Buttons,
Initial Position [Left, Top, Right, Bottom],
Style Flags,
Extended Style Flags,
Flag Navigation Pane initially closed (1 = closed),
??,
Default Pane,
??,
??

Use the following values to add or delete any of the buttons by hand. These values are from htmlhelp.h:

0x 2 Hide/Show
0x 4 Back
0x 8 Forward
0x 10 Stop
0x 20 Refresh
0x 40 Home
0x 80 Forward
0x 100 Back
0x 200 Notes
0x 400 Contents
0x 800 Sync
0x 1000 Options
0x 2000 Print
0x 4000 Index
0x 8000 Search
0x 10000 History
0x 20000 Favorites
0x 40000 Jump 1
0x 80000 Jump 2
0x100000 Zoom
0x200000 TOC Next
0x400000 TOC Prev

Now, open your HHP in NotePad. Take a look at where the Buttons parameter is in the Window Definition portion of this posting, and figure out where this section is in your HHP. Now, remembering that this is hexadecimal math, add together all the values you want for the buttons you want to see.

For example:

Zoom 0x100000
Hide/Show 0x000002
Back 0x000004
Forward 0x000008

Buttons = 0x10000E

If you're like me and have trouble with hexadecimal math on occasion, do what I do: I use a Texas Instruments TI-36X Solar calculator that has this functionality built-in. It was about $15 US.

Note: If you implement the TOC Next and TOC Prev buttons, make sure you also flag the HHP file to create a binary TOC. If you don't, the TOC Next and TOC Prev buttons will appear as disabled.

 

HTML Help vs. The Package and Deployment Wizard: A Note to VB and Office Developers

The Package and Deployment Wizard is an add-in that has shipped with Visual Basic 6 since its release, allowing developers to create setup packages for their applications. One of its quirks is that it requires a CHI file for each compiled HTML Help file (*.chm) shipped with an application. CHI file creation isn't yet supported externally by Microsoft, although it may be in the future. Because the information a CHI would contain is presently compiled into stand-alone CHM's created by the HTML Help compiler, developers can safely Cancel their way past this request.

I've also looked into the Package and Deployment Wizard that now ships with the Office 2000 Developer Tools and found it has the same requirement. Developers can Cancel their way past it here as well.

Please spread the word to any developers who may be using the wizard.