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

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

CHM帮助文件在VB程序中的应用
――HTML Help Workshop

一.工欲利其事,必先利其器――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”按钮开始新建目录文件。
image.png

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

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

image.png

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

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

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

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

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

image.png

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

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

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

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

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

image.png

四.牛刀小试――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)
image.png

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

image.png

在Windows XP / VB 6.0环境下测试成功。

相关文章
|
Windows
Keil5中恢复默认布局-解决左边栏,底部栏位置不是默认布局
Keil5中恢复默认布局-解决左边栏,底部栏位置不是默认布局
1492 0
|
缓存 前端开发 JavaScript
探索现代前端框架与工具链
探索现代前端框架与工具链
174 0
|
9月前
|
安全 测试技术
更睿智的看世界!实测阿里首个多模态视觉推理模型QVQ-72B-Preview
阿里通义千问Qwen团队于12月25日推出首个开源视觉推理模型QVQ-72B-Preview,该模型在数学、物理、化学等领域表现出色,在MMMU基准测试中得分70.3,超越Qwen2-VL-72B-Instruct。尽管在部分任务如立体图形计数上存在局限性,QVQ-72B-Preview仍展示了强大的视觉理解和推理能力。模型目前仅支持单轮对话和图像输出,不支持视频输入。地址:https://modelscope.cn/studios/Qwen/QVQ-72B-preview
|
存储 安全 算法
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
本文深入探讨了网络安全和信息安全领域的关键要素,包括网络安全漏洞、加密技术和安全意识。首先,文章介绍了网络安全漏洞的定义、类型以及发现和修复过程。接着,详细阐述了加密技术的原理、应用及其在保护数据安全中的重要性。最后,强调了提高安全意识的必要性,并提供了实用的安全建议。通过综合分析这些方面,本文旨在为读者提供全面的网络安全和信息安全知识,帮助他们更好地保护自己的在线安全。
|
SQL Oracle 关系型数据库
MySQL中多表连接查询总结与实践
MySQL中多表连接查询总结与实践
862 1
|
缓存 安全 Ubuntu
基于Alpine构建轻量级带有cURL功能的Docker镜像
基于Alpine构建轻量级带有cURL功能的Docker镜像
基于Alpine构建轻量级带有cURL功能的Docker镜像
|
JSON 虚拟化 Docker
Windows10 Docker安装和docker-compose 安装
Windows10 Docker安装和docker-compose 安装
1283 0
|
前端开发 小程序 JavaScript
基于微信小程序社区老年人健康医疗信息服务平台设计与实现
基于微信小程序社区老年人健康医疗信息服务平台设计与实现
500 0
|
存储 分布式计算 大数据
大数据开发岗面试复习30天冲刺 - 日积月累,每日五题【Day27】——Spark14
大数据开发岗面试复习30天冲刺 - 日积月累,每日五题【Day27】——Spark14
98 0
从0-1实现文件下载CLI工具(2)
示例代码5 Proxy 部分资源访问不顺畅的时候,通常会走服务代理(🪜) 以谷歌的logo资源链接https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png 要让前面的方法downloadByUrl顺利执行,就需要其走代理服务