CHM幫助檔案在VB程式中的應用
――HTML Help Workshop
一.工欲利其事,必先利其器――CHM制作之工具
1. 首推微軟門下的專門工具HTML Help Workshop,它是制作chm幫助檔案最權威、功能最全的工具(但不是最快的工具),下載下傳位址:
<a href="http://down1.tech.sina.com.cn/download/downContent/2004-03-16/7463.shtml">http://down1.tech.sina.com.cn/download/downContent/2004-03-16/7463.shtml</a>
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>
<param name="Name" value="葉帆幫助">
<UL>
<param name="Name" value="第一個幫助選項">
<param name="Local" value="HTML/YF2.htm">
<param name="Name" value="第二個幫助選項">
<param name="Local" value="HTML/YF3.htm">
</UL>
</BODY>
</HTML>
3.索引檔案(.hhk)
chm幫助檔案,索引選項中索引字段的設定,格式與hhc檔案類似。
<param name="Name" value="首頁"> ? 索引名
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屬性
.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"
b). frmPopuTest窗體
WhatsThisButton =True <--要在屬性框才能設定成功
WhatsThisHelp = True <--要在屬性框才能設定成功
窗體上添加六個控件:text1、text2、Combo1、Command1、Label1、Label2,對前四個控件,分别設定屬性HelpContextID的值為30001、30002、30003、3004(要和popup檔案中的索引号一緻)
'在激活事件裡,設定幫助檔案
App.HelpFile = App.Path & "/YFhelp.chm::YFpopups.txt"
‘初始化
Private Sub Form_Load()
Text2.FontSize = 1
Text2.Width = 1
Text2.Height = 1
'單擊彈出幫助資訊
Private Sub Label2_Click()
Text2.SetFocus
SendKeys "{F1}"
3.運作VB,測試一下我們的勞動成果
a).上下文幫助測試(如圖14)
b).彈出式幫助測試(如圖15)
<a href="http://p.blog.csdn.net/images/p_blog_csdn_net/yefanqiu/23649/o_01.gif"></a>
在Windows XP / VB 6.0環境下測試成功。