CHM帮助文件在VB程序中的应用

简介: CHM帮助文件在VB程序中的应用――HTML Help Workshop作 者:叶帆(http://blog.

CHM帮助文件在VB程序中的应用
――HTML Help Workshop
作 者:叶帆(http://blog.csdn.net/yefanqiu)

一.工欲利其事,必先利其器――CHM制作之工具
1. 首推微软门下的专门工具HTML Help Workshop,它是制作chm帮助文件最权威、功能最全的工具(但不是最快的工具),下载地址:
http://down1.tech.sina.com.cn/download/downContent/2004-03-16/7463.shtml
2. PowerCHM等一些快速制作chm的帮助文件的程序也是很好的选择,配合HTML Help Workshop的使用,更是如虎添翼。
3.  HTML Help Workshop一些汉化软件使用起来,好像有些问题,所以还是推荐使用英文原版。

二.寻根探源――CHM源文件之组成
1. 项目文件(.hhp):类似VB程序中的vbp文件,其内容格式类似ini文件,主要包括如下几部分:
a). [OPTIONS] 基本参数设置:
Compiled file=YFHelp.chm       //编译后的chm文件名
Contents file=YFHelp.hhc       //目录文件名
Index file=YFHelp.hhk          //索引文件名
Title=叶帆帮助                 //chm窗口标题
Default Window=main            //主窗口,与[WINDOWS]字段下的窗体对应
b). [WINDOWS] 帮助窗口设置:
main="叶帆帮助","YFHelp.hhc","YFHelp.hhk","HTML/YF1.htm","Html/YF1.htm",,,,,0x20,180,0x104E,[100,100,900,700],,,,0,0,0,0
主要包括如下内容:窗口名称、目录文件、索引文件、默认主页、首先页、窗口大小和初始位置。
c). [FILES] 帮助组成文件:
HTML/YF1.htm             //针对hhp文件存放位置的相对路径
HTML/YF2.htm  
HTML/YF3.htm
d). [TEXT POPUPS] popup弹出帮助的源文件设置:
YFPopups.txt               // popup弹出帮助的源文件路径
e). [MAP]映射文件设置:
#include YFheader.h        //类似C语言的头文件,主要是一些常数的宏定义
f). [ALIAS] 别名设置:
IDH_HELP1=Html/YF1.htm   // IDH_HELP1在YFheader.h有定义
IDH_HELP2=Html/YF2.htm    // IDH_HELP2在YFheader.h有定义
IDH_HELP3=Html/YF3.htm    // IDH_HELP3在YFheader.h有定义
2.目录文件(.hhc)
该文件定义chm文件的树型目录,类似网页文件,格式如下:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1">
<!-- Sitemap 1.0 -->
</HEAD>
<BODY>
<OBJECT type="text/site properties">
 <param name="Window Styles" value="0x10">
</OBJECT>
<UL>                                             ? LI/UL控制树的层次
 <LI> <OBJECT type="text/sitemap">
  <param name="Name" value="首页">              ? 目录树的选项名
  <param name="Local" value="HTML/YF1.htm">     ? 链接的文件名
  </OBJECT>
 <LI> <OBJECT type="text/sitemap">
  <param name="Name" value="叶帆帮助">
  </OBJECT>
<UL>
 <LI> <OBJECT type="text/sitemap">
  <param name="Name" value="第一个帮助选项">
  <param name="Local" value="HTML/YF2.htm">
  </OBJECT>
 <LI> <OBJECT type="text/sitemap">
  <param name="Name" value="第二个帮助选项">
  <param name="Local" value="HTML/YF3.htm">
  </OBJECT>
</UL>
</UL>
</BODY>
</HTML>
3.索引文件(.hhk)
chm帮助文件,索引选项中索引字段的设定,格式与hhc文件类似。
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1">
<!-- Sitemap 1.0 -->
</HEAD>
<BODY>
<UL>                                             ? LI/UL控制树的层次
 <LI> <OBJECT type="text/sitemap">
  <param name="Name" value="首页">              ? 索引名
  <param name="Local" value="HTML/YF1.htm">     ? 链接的文件名
  </OBJECT>
 <LI> <OBJECT type="text/sitemap">
  <param name="Name" value="第一个帮助选项">
  <param name="Local" value="HTML/YF2.htm">
  </OBJECT>
 <LI> <OBJECT type="text/sitemap">
  <param name="Name" value="第二个帮助选项">
  <param name="Local" value="HTML/YF3.htm">
  </OBJECT>
</UL>
</BODY>
</HTML>
4.头文件(.h)
给C语言的头文件别无二致,主要包含一些常数的宏定义
#define IDH_HELP1 1001        ? 对应VB控件的HelpContextID属性
#define IDH_HELP2 1002
#define IDH_HELP3 1003
5.popup文件(.txt)
这是一个很有用的文件,popup帮助弹出的内容就在这里定义,对这个文件同样可以包含一个头文件(.h),它包含常数的宏定义,这样在txt文件中就可以写宏变量了,不过我还是直接建议写相应常数。
.topic 30001                    ? 对应VB控件的WhatsThisHelpID属性 
哈哈,这是第一条Popup帮助,叶帆的Blog:http://blog.csdn.net/yefanqiu
.topic 30002
哈哈,这是第二条Popup帮助,叶帆的软件:API浏览器、VB源码之友...
.topic 30003
哈哈,这是第三条Popup帮助,叶帆开源:XP窗体界面、串口通信示例...
.topic 30004
哈哈,这是第四条Popup帮助,叶帆的开发团队:Sky Walker(天行者)

三.循序渐进――CHM源文件之制作
头文件、popup文件、索引文件就不用介绍怎么制作了(搞开发的,大家都是聪明人),主要介绍hhp和hhc文件的制作。(此外用到的一些网页文件,请用FrontPage或其它工具软件制作,这里不作介绍)。
1.目录文件(.hhc)的制作
首先先用工具软件做好相关的网页(比如我做了三个简单的网页:YF1.htm、YF2.htm、YF3.htm),然后打开HTML Help Workshop,选择“File”菜单中的“New”选项,在对话框中选择“Table of Contents”(如图1),按“OK”按钮开始新建目录文件。


然后在hhc编辑窗口,添加上已做好的三个网页YF1.htm、YF2.htm、YF3.htm,并添加所需的目录,并调整好相应的目录树型结构,如图2所示:


最后按保存,完成hhc文件的编制。
2.项目文件(.hhp)的制作
第一步:选择“File”菜单中的“New”选项,在对话框中选择“Project”(如图3),按“OK”按钮开始新建项目文件。


第二步:输入hhp文件的路径和文件名(如图4)。


第三步:选择工程文件包含的选项(如图5)。


第四步:添加刚才生成的目录hhc文件(如图6)。


第五步:添加索引hhk文件(如图7)。


第六步:确认完毕后,进入主编辑界面,单击工具条上的添加窗口按钮,添加主窗口(如图8)。


第七步:设置主窗口的标题(如图9)。


第八步:设置初始窗口位置和大小(如图10),其它选项请根据需要,自行设定。


第九步:添加主体文件(如图11)。


第十步:添加接口信息,把头文件、别名信息、Popup文件分别添加(如图12)。


第十一步:最关键一步,单击编译,生成CHM文件,这是编译后的结果,如图13所示:

四.牛刀小试――CHM文件在VB中的应用
1.在VB中新建两个窗体,测试上下文帮助的窗体命名为frmContextTest,测试弹出式帮助的窗体命名为frmPopuTest。
2.设置窗体必要的属性及添加必要代码
a). frmContextTest窗体
WhatsThisButton = False    <--要在属性框才能设置成功
WhatsThisHelp = False     <--要在属性框才能设置成功
窗体上添加三个控件:text1、List1、Check1,分别设置属性HelpContextID的值为1001、1002、1003(要和头文件中的宏定义一致)。
添加如下代码:
Option Explicit
'测试弹出式帮助
Private Sub Command2_Click()
    frmPopupTest.Show
End Sub
'功能描述:在窗体激活事件里设置帮助
Private Sub Form_Activate()
    App.HelpFile = App.Path & "/YFHelp.chm"
End Sub
b). frmPopuTest窗体
WhatsThisButton =True     <--要在属性框才能设置成功
WhatsThisHelp = True      <--要在属性框才能设置成功
窗体上添加六个控件:text1、text2、Combo1、Command1、Label1、Label2,对前四个控件,分别设置属性HelpContextID的值为30001、30002、30003、3004(要和popup文件中的索引号一致)
添加如下代码:
Option Explicit
'在激活事件里,设置帮助文件
Private Sub Form_Activate()
     App.HelpFile = App.Path & "/YFhelp.chm::YFpopups.txt"
End Sub
‘初始化
Private Sub Form_Load()
     Text2.FontSize = 1
     Text2.Width = 1
     Text2.Height = 1
End Sub
'单击弹出帮助信息
Private Sub Label2_Click()
    Text2.SetFocus
    SendKeys "{F1}"
End Sub
3.运行VB,测试一下我们的劳动成果
a).上下文帮助测试(如图14)


b).弹出式帮助测试(如图15)

在Windows XP / VB 6.0环境下测试成功。
源代码下载地址:http://www.bjjr.com.cn/YeFan/SourceCode/yfchmvb.rar

相关文章
|
12月前
|
编译器 Linux C语言
【gcc/g++】程序的翻译(.c -->.exe)
【gcc/g++】程序的翻译(.c -->.exe)
|
前端开发 iOS开发 MacOS
mac系统markdown文件编写
1.选择软件 (zettlr) 2.markdown简单语法 1.标题 2.目录树
173 0
|
小程序
VB编程:获取文件夹下所有文件-1
VB编程:获取文件夹下所有文件-1
314 0
VB编程:获取文件夹下所有文件-1
|
小程序
VB编程:获取文件夹下所有文件
VB编程:获取文件夹下所有文件
499 0
VB编程:获取文件夹下所有文件
|
索引 Windows
CHM帮助文件在VB程序中的应用
CHM帮助文件在VB程序中的应用
824 0
|
Java Linux 数据安全/隐私保护
wkhtmltopdf+itext实现html生成pdf文件的打印下载(适用于linux及windows)
目中遇到个根据html转Java的功能,在java中我们itext可以快速的实现pdf打印下载的功能,在itext中我们一般有以下三中方式实现 配置pdf模板,通过Adobe Acrobat 来设置域最后通过代码将数据填充进去 通过FreeMarker或thymeleaf配置html模板填充数据 Jsoup+XMLWorkerHelper 对于上述的三种方式,我简述下我的体验:第一种方式对于入门简单,如果我们需求中的pdf文件是表格或者报表的样式还是很好实现的,但如果遇到要求和html样式一致的话就基本歇菜了。
3391 0
|
数据库 数据库管理
|
Windows 图形学 测试技术