Updated February 26, 2003
The HTML Help Object Library had always seen a bit of popularity among its users. Based on the popular HTML Help class module, the DLL had shown itself to be a simple solution to what appears to be a complex problem: that of using HTML Help with COM-enabled applications and documents. However, it has its drawbacks. Written in Visual Basic 5, it has the overhead of over 1M of runtime files. Because of this, unless a user has VB5 installed, earlier versions of the HTML Help Object Library have to be installed as a package when it's redistributed. Also, on older machines, it's a bit on the slow side.
And finally, there are certain things the HTML Help Object Library is just not capable of doing. Besides certain HTML Help functions, it was also never designed to handle WinHelp functions. As some developers have waited for something that can handle both WinHelp and HTML Help calls, such a thing was a long time coming.
Version 4.0 of the Object Library DLL changes all this. Based on Delphi 5.0, it's basically a port of the HTML Help class module, but with major enhancements, including WinHelp functionality.
One important aspect of this DLL is that no extra runtime files are required. The ActiveX DLL can just be registered on the user's machine, and off it goes to do its job. This also means it's smaller. Instead of 2M total space, the DLL is less than 400k. With less overhead to work with, the new DLL offers better performance. And finally, there are some plans for other enhancements that simply aren't available in a VB-based DLL.
The new Help Object Library operates in almost the same manner as the HTML Help Object Library . This means the usage is, for the most part, identical. Drop it in where the old one was, and the majority of the functionality will work as before. The biggest changes are in the area of subclassing. This has never worked quite right, as Visual Basic's AddressOf operator is as flaky as a breakfast cereal. I've change this to a recommendation to use Mabry's freeware MsgHook control for subclassing. This little control is very robust, and boils the subclassing code down to a few statements. The Visual Basic sample requires this control, and you can see how easy it is to use from the code in the sample.
Also, I've included the HHGetWinType and HHSetWinType methods from the HHWindows Object Library. This places the majority of the possible HTML Help API calls within reach of Visual Basic developers and developers of other problematic languages.
In addition, version 4.0 of the Help Object Library implements standard COM exceptions for the most troublesome API calls. Handled correctly within your own applications, these exceptions can become invisible to your users, but can allow you to log problems and deal with them as time permits. The current error codes are included in the help file, and there's a global error handler in the Visual Basic examples in the same help file.
Finally, A complete set of WinHelp properties and methods are available from the Help Object Library. This renders a complete solution for the most popular help development methods.
The DLL's modularity also means we can slide in support for LongHorn Help when it's released by simply adding another interface.
HTML Help >