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.
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.
- Return To Top
|
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.
- Return To Top
|
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.
- Return To Top
|
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.
- Return To Top
|
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!
- Return To Top
|
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 as RoboHelp.
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.
- Return To Top
|
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.
- Return To Top
|
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).
- Return To Top
|
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.
- Return To Top
|
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.
- Return To Top
|
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.
- Return To Top
|
|