Pocket PC 2002 ArmV4 CHM阅读器开发记

作为一名MCAD(微软认证应用程序开发人员)的备考者,面临着一个挑战:如何有效地利用学习时间。由于无法负担昂贵的培训课程,决定自学。然而,生活总是忙碌的,要么不得不随身携带一堆沉重的书籍,要么坐在电脑前,这并不总是可行的。幸运的是,在圣诞节收到了一台Pocket PC。但Pocket PC并没有内置CHM阅读器,而且网上的CHM阅读器要么不是免费的,要么无法很好地处理大型CHM文件。因此,决定自己编写一个,这就是开发这个可以处理大型CHM文件(测试最大14Mb)的免费CHM阅读器的原因。这个程序只在Pocket PC 2003的iPAQ 5550上进行了测试。

代码

这个CHM阅读器是一个MFC文档列表应用程序,使用了多个优秀的库。

Virtual Office Systems Incorporated - VOImage, VOString & VORegistry类

Vassili Philippov - CSTHtmlDialog

Jed Wing - CHMLib库

João Paulo Figueira [joao.figueira@vianw.pt] - 一般帮助

感谢所有这些人为网络贡献了如此出色的代码。

CHM阅读器首先显示PocketPC选定目录中所有CHM文件的文档列表(MFC的)。当用户选择其中一个时,MFC会创建一个新的CCHMReaderDoc实例,然后使用CCHMFile类。这个类处理CHMLib库。然后打开CHM文件,CCHMFile类会构建CHM文件中包含的所有文件的列表。它还构建内容的树状列表。这将在CCHMReaderView类中显示。这显示了CHM文件的内容。用户然后可以选择内容中的一个项目,显示一个新的对话框。这个对话框包含了Pocket PCInternet Explorer控件。使用CCHMFile类和CHMLib库从CHM文件中提取HTML文件。HTML还扫描了任何样式表条目。然后也从CHM文件中提取它们。然后使用HTML初始化IE控件以供显示。

需要注意的一点是,图像是从CHM文件中提取的,因为IE控件需要它们。当IE控件加载HTML时,它会通过通知消息依次请求每个图像。当处理通知时,只是从CHM文件中提取图像到缓冲区。然后使用VOImage类解压缩。然后将其传回IE控件。

额外功能

还添加了一些简单的额外功能,比如改变文本大小,切换“纯文本”和“适应窗口”,因为这些都是由IE控件实现的。还向工具栏添加了'<'和'>'按钮,使用户可以轻松地在内容列表中前后导航。

另外请注意:如果一个CHM文件需要其他CHM文件(Windows CHM帮助文件)的文件,那么如果文件存在,CHMReader会尝试获取所需的文件,但并不总是成功。

安装

只需将CHMReader.EXE和任何CHM文件复制到PocketPC上,然后运行即可。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485