Integrating DirectX 8 Into MSDN
It was really starting to annoy me that I couldn't just hit F1 from within
my source (under Visual Studio 6) on a DirectX8 function call and get help
through MSDN for DirectX 8. I never found any resources on the net about
this, so I went hunting around through my system and figured out how. If
there's a better reference on the net, somebody please post it in the
Look in the directory:
C:\Program Files\Microsoft Visual Studio\MSDN98\98VS
From there, you'll see another directory which is specific to your
language. On my system, it is '1033'. If you look in there, you'll find a
lot of CHM and CHI files.
First, go find your DX8 help files. They are called directx8_c.* (for C++)
and directx8_vb.* (for Visual Basic). There will be two files for each, a
CHM and a CHI file. Copy these into your language specific directory. In
my case, I'm a C++ programmer, so I just copied the directx8_c.chm and
directx8.chi files into my '1033' directory. I'm going to describe how I
got this working on my machine with just the help files for C++, but if
you want to add support for VB help (or both) you should be able to figure
it out relatively easily.
The CHM files are compiled HTML files (called "chums") and the CHI files
are the index files for each associated CHM file. In your
language-specific directory, you'll also see a msdnvs98.CHW file, a
msdnvs98.CHQ file and a msdnvs98.COL file.
The CHW file is the combined index file (i.e. when you open up the index
pane under MSDN.) This is a binary file.
The CHQ file is the index file used for word searches (i.e. when you open
up the search pane under MSDN.) This is a binary file.
The COL file describes what you'll find in the table of contents. This is
an XML file.
If you study the COL file, you'll see how the treeview (for the contents)
is arranged. Here, you can add your directx8 help file. You can add it to
the tree wherever you want, but I recommend replacing the DX5
documentation that's already there. This documentation is out of date
anyway. So find the string "=dxfound" and replace it with "=directx8_c"
(for C++) or "=directx8_vb" (for Visual Basic.)
Immediately following that, you'll find an entry for dxmedia. This is also
out of date and contains duplicates from the new DX8 docs), so I removed
it from mine. If you want to remove it, make sure you remove the whole
thing (from <Folder> to </Folder>).
Save the COL file. You're done with it.
If you open up MSDN and go to the contents, then open up "Platform SDK"
and then look in "Graphics and Multimedia Services" you'll notice that the
directX stuff that used to be there, is no longer there. But the new stuff
isn't there either. Why?
Because we never told MSDN that the file (directx8_*) is actually part of
the document set. So go find your hhcolreg.dat file. In my case, it's in
the C:\WINNT\HELP directory. Before you edit this file, make sure MSDN is
The hhcolreg.dat file is also an XML file. Go to the bottom of the file.
You'll see a bunch of <DocCompilation> </DocCompilation> groups. Take
notice that these are all within a huge <DocCompilations> grouping. Take
further notice that there is a difference between <DocCompilation> and
Using copy/paste, duplicate the last block -- it should
be about 16 lines. Looking at your duplicated block, find the
tag and change the value to equal your directx8 base filename (again, in
my case, it is "directx8_c").
Finally, remove the <QueryLocation> tag line alltogether. If you leave
this in, then MSDN will try using the existing CHQ file when you perform
searches. By removing this, you're telling MSDN that the CHM file's index
is not integrated into the CHQ file, and MSDN will search it separately. I
never found a way to rebuild the CHQ file, so this is necessary.
So, what we've done so far...
We've edited the COL file to add our stuff to the MSDN table of contents.
We've modified the hhcolreg.dat file to tell MSDN to access our new help
files. This will get MSDN to recognize our file in the table of
contents. And since we removed the CHQ file reference in the hhcolreg.dat
file, we've told MSDN not to use its combined search index for
The only thing left, is to rebuild the CHW file, which is used for the
index pane in MSDN. Fortunately, this is automatic. Just open up MSDN and
click on the 'index' pane and it will automatically rebuild the CHW file.
That should do it. DX8 should be fully integrated now, without the old
DirectX or DirectMedia stuff getting in the way and cluttering up our
The zip file viewer built into the Developer Toolbox made use
of the zlib library, as well as the zlibdll source additions.