Click here to Skip to main content
15,885,216 members
Articles / Mobile Apps / Windows Mobile

CHM Reader for Pocket PC 2003

Rate me:
Please Sign up or sign in to vote.
4.91/5 (65 votes)
29 Feb 2004CPOL3 min read 465.8K   960   87   142
Allows the reading of CHM files on a Pocket PC2003.

Sample Image - pic004.jpg

Introduction

I have started to study for the MCAD. So after getting the books (I cannot afford the training courses), I started to read. However, as life is busy, I either had to carry a number of heavy books around, or sit in front of a PC which is not always possible. I was then lucky enough to get a Pocket PC for Christmas. But Pocket PCs do not come with a CHM Reader, and the ones available on the web are not free, or do not handle large CHM files well. So I decided to write my own and this is the result. A free CHM Reader which can handle large CHM files (Tested up to 14Mb in size). This program has only been tested on the Pocket PC 2003 on an IPaq 5550.

The Code

This CHM Reader is a MFC Doc List application, which uses a number of good libraries.

  • Virtual Office Systems Incorporated - VOImage, VOString & VORegistry classes
  • Vassili Philippov - CSTHtmlDialog
  • Jed Wing - The CHMLib Library
  • João Paulo Figueira [joao.figueira@vianw.pt] - General Help

Thanks to all these people for the great code they have contributed to the web.

CHMReader first displays a DocList (MFC's) of all the CHM files in the selected directory of the PocketPC. When the user selects one of them, MFC creates a new CCHMReaderDoc instance which will then use CCHMFile class. This class handles the CHMLib library. The CHM file is then opened, and the CCHMFile class will build a list of all the files contained in the CHM file. It also builds a Tree list of the contents. This is then displayed in the CCHMReaderView class. This shows the contents of the CHM File. The user can then select one of the items in the contents, and a new dialog is displayed. This dialog contains the Pocket PC Internet Explorer control. The HTML file is extracted from the CHM file using the CCHMFile class & the CHMLib library. The HTML is also scanned for any Style Sheet entries. These are then also extracted from the CHM file. Then the IE control is initialized with the HTML for display.

One thing to note is that the images are extracted from the CHM file as the IE control needs them. When the IE control loads the HTML, it will ask for each image in turn by way of a notification message. When I handle the notification, I simply extract the image from the CHM file into a buffer. It is then uncompressed using the VOImage class. It is then passed back to the IE control.

Sample screenshot

Sample screenshot

Extras

I also added a few simple extras like the ability to change the text size, toggle 'Clear Text' & 'Fit to Window' as these are all implemented by the IE control. I also added '<' and '>' buttons to the toolbar to allow the user to navigate back and forth in the contents list easily.

Also note: If one CHM file requires files from other CHM files (Windows CHM Help Files) then if the files are present, CHMReader will try to get the files required, but it does not always.

Installation

Just copy the CHMReader.EXE & any CHM files to your PocketPC, and run.

Build Environment

To build the CHMReader, I used embedded Visual C V4 SP2.

History

  • V1.0 - 9 Feb 2004 - First release
  • V1.01 -11 Feb 2004 - Bug fixes - Incorrectly handling images which where not found in CHM file.
  • V1.03 - 18 Feb 2003 - Bug fixes - Pocket Internet Explorer does not handle script or XML tags, so I removed them from the HTML code before I pass it to the HTML code. Also links to other parts of the CHM file did not work correctly. Now fixed.
    • 24 Feb 2003 - Added download for PocketPC2002 OS

Extra Downloads

For the most current downloads, please download from here.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior)
United Kingdom United Kingdom
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralOverflow exception Pin
John Dough9-Oct-06 8:13
John Dough9-Oct-06 8:13 
GeneralRe: Overflow exception Pin
Peter Tewkesbury9-Oct-06 21:40
professionalPeter Tewkesbury9-Oct-06 21:40 
GeneralRe: Overflow exception Pin
John Dough11-Oct-06 6:10
John Dough11-Oct-06 6:10 
QuestionHelp Required Pin
K.HARIKRISHNA13-Jun-06 3:01
K.HARIKRISHNA13-Jun-06 3:01 
AnswerRe: Help Required Pin
Peter Tewkesbury14-Jun-06 2:13
professionalPeter Tewkesbury14-Jun-06 2:13 
GeneralRe: Help Required Pin
Jackey_shao8-Aug-07 21:08
Jackey_shao8-Aug-07 21:08 
GeneralRe: Help Required Pin
Peter Tewkesbury8-Aug-07 23:35
professionalPeter Tewkesbury8-Aug-07 23:35 
GeneralHelp Required.. Pin
Sreekanth Muralidharan7-Dec-05 23:42
Sreekanth Muralidharan7-Dec-05 23:42 
Help Required..
I have installed VS .NET 2005 and PocketPC and Smartphone SDKs on my
128MB RAM machine and the installation was successful let alone for
some nasty messages issued by Norton AV. But while I deploy my small
"Hello World" application to the emulator, I get a "Deploy Succeeded"
message. But still I could not see the changes I have made in the
application running in the emulator. Please help me.
My system configuration is as follows. (I think I have only the minimum
requirements.)


My emulator settings are:

Pocket PC Emulator:
--------------------
Name: Windows Mobile 5.0 Pocket PC Emulator.
Platform: Windows Mobile 5.0 Pocket PC SDK.
Default Output Location: /Program Files
Transport: TCP Connect Transport
Bootstrapper: Device Emulation Startup Provider.


Emulator Options:
................
Selected Specify RAM size option: as 256


All the other fields remain empty.


Smartphone Emulator:
----------------------
Name: Windows Mobile 5.0 Smartphone Emulator.
Platform: Windows Mobile Smartphone SDK.
Default Output Location: /Program Files
Transport: TCP Connect Transport
Bootstrapper: Device Emulation Startup Provider.

Emulator Options:
................
Selected Specify RAM size option: as 128

All the other fields remain empty.

Hardware:
CPU: Pentium III
RAM: 128MB

Software:
OS: Win2K Professional with IE 6.0
Others: Office 2K





Sreekanth Muralidharan,
Corporate Systems Consultant [Embedded Systems],
INDIA
GeneralRe: Help Required.. Pin
Peter Tewkesbury8-Dec-05 21:51
professionalPeter Tewkesbury8-Dec-05 21:51 
GeneralRe: Help Required.. Pin
Sreekanth Muralidharan11-Dec-05 16:59
Sreekanth Muralidharan11-Dec-05 16:59 
GeneralPerfect, mostly Pin
Mondor11-Sep-05 11:11
sussMondor11-Sep-05 11:11 
GeneralRe: Perfect, mostly Pin
Peter Tewkesbury18-Sep-05 21:57
professionalPeter Tewkesbury18-Sep-05 21:57 
QuestionCan it be tansplanted to wince.net? Pin
Member 215801223-Aug-05 23:43
Member 215801223-Aug-05 23:43 
AnswerRe: Can it be tansplanted to wince.net? Pin
Peter Tewkesbury25-Aug-05 3:02
professionalPeter Tewkesbury25-Aug-05 3:02 
QuestionNeed help? Pin
RNick14-Aug-05 7:03
RNick14-Aug-05 7:03 
AnswerRe: Need help? Pin
Peter Tewkesbury14-Aug-05 21:27
professionalPeter Tewkesbury14-Aug-05 21:27 
GeneralSuggestion: fit-to-window feature Pin
John Hawk7-Aug-05 19:31
John Hawk7-Aug-05 19:31 
GeneralRe: Suggestion: fit-to-window feature Pin
Peter Tewkesbury8-Aug-05 21:48
professionalPeter Tewkesbury8-Aug-05 21:48 
GeneralRe: Suggestion: fit-to-window feature Pin
pinxue23-Feb-06 18:56
pinxue23-Feb-06 18:56 
GeneralTest Pin
AbdullahVB30-Jul-05 22:10
AbdullahVB30-Jul-05 22:10 
GeneralNothing to say! Just a great job! Pin
George Mamaladze16-Jun-05 11:40
George Mamaladze16-Jun-05 11:40 
GeneralGreat Tool Pin
Ghazi H. Wadi2-May-05 23:00
Ghazi H. Wadi2-May-05 23:00 
GeneralThanks Pin
zagwazatha16-Jun-05 6:57
zagwazatha16-Jun-05 6:57 
GeneralTrouble with cyrillic Pin
Member 183417627-Mar-05 22:42
Member 183417627-Mar-05 22:42 
GeneralRe: Trouble with cyrillic Pin
Peter Tewkesbury7-Apr-05 21:27
professionalPeter Tewkesbury7-Apr-05 21:27 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.