Windows操作系統所提供的在線幫助功能十分強大,在某個關鍵字上按下F1鍵,Windows就能將該關鍵字的有關幫助信息顯示出來,同時提供與其相關的詞的信息。其實,在Visual Basic(以下簡稱VB)的應用程序中也可以很容易地實現Windows風格的在線幫助。
Windows操作系統提供的在線幫助工具軟件可完全設計VB的在線幫助系統,主要有兩個步驟:第一是必須產生一個含有想要顯示的幫助信息的HLP文件;第二是將代碼加入到VB的應用程序中,以調用Windows風格的幫助文件。
產生HLP文件
首先需要兩個工具:產生RTF超文本格式文件的字處理軟件MS Word 6.0和Windows HELP 編譯程序HC.EXE(或HC31.EXE),後一個工具在VB中已經提供。
使用字處理軟件MS Word 6.0,產生一個包括幫助文字和圖形的文檔。通過應用適當的格式代碼(如通過加腳注#、K、$、+等)後,可給標題賦予標識符,為HELP的Search命令指定使用的關鍵字詞,指定浏覽順序等,然後存成RTF格式。幾個HELP文檔組合產生一個在線幫助項目文件*.HPJ,它將包括幫助文本在內的RTF文檔名字通知給HELP編譯器。指定在線幫助項目文件的名字*.HPJ,運行HELP編譯程序。若編譯成功,則可以產生一個HLP文件。
將HELP文件連接到應用程序中
HELP文件完成之後,才算完成了准備工作,重要的是還要把生成的HELP文件連接到應用程序當中,這樣才能產生在線幫助。一般書中都介紹利用Windows中的API接口函數WINHELP的方法進行連接,其實VB本身已提供了至少兩種方法可以輕松地將幫助文件連接到應用程序中去。下面分別介紹。
1.利用各控件本身的HelpContextID屬性
在VB4.0中,幾乎每個控件都有一個HelpContextID屬性。通過設置各控件的HelpContex tID屬性就可以輕松地將幫助文件與應用程序相連。
例如:在窗體Form1上放置兩個控件:按鈕Command1和文本框Text1,並編程如下:
Const winCommand=100 ’常量設置 Const winText=200 Sub Form—Load() App.HelpFile=DY.HLP Command1.HelpContextID=winCommand Text1.HelpContextID=winText 幫助文件的名字,在當前目錄下 End Sub
當程序運行時,把焦點移到任一控件(按鈕或文本框)上,再按下F1鍵,就可以? 當前焦點的在線幫助。
2.利用VB4.0本身提供的控件Common Dialog Boxes(通用對話框)
VB提供了一組基於Windows的標准通用對話框界面,可直接通過通用對話框工具,在窗體上創建。為使通用對話框工具在工具箱中存在,必須在項目窗口中加入COMMDLG.VBX文件且在Windows目錄的SYSTEM子目錄中要有文件COMMDLG.DLL。
當Action屬性值為6時,可在窗體上得到一個標准的Help窗口顯示。該幫助對話框可用於在界面上制作標准Help對話框,用戶對該對話框進行操作,可提供應用程序的在線幫助。但該窗口不能制作應用程序的幫助文件,只能將已制作並存好的幫助文件從磁盤中提取出來,並與界面連接起來,達到顯示並檢索幫助信息的目的。
與Help窗口有關的屬性如下:
(1)HelpCommand:用於指定Help幫助類型,即幫助信息命令。可用vbHelpKey給此屬性賦值,那麼Help窗口可顯示用Keyword關鍵字指定的內容的幫助。幫助的命令屬性為常量值,存於CONSTANT.TXT常量文件中,以vbHelp開頭,通過為該屬性賦值,規定幫助窗口以什麼方式顯示幫助信息。
(2)HelpFile:用於指定Help文件名,即找到幫助文件,再從文件中找到相應內容,顯示在Help窗口中。
(3)HelpKey:用於指定幫助信息的內容,用關鍵字(Keyword)賦給HelpKey屬性,那麼幫助窗口中即顯示出該關鍵字指定內容的幫助信息。
(4)HelpContext:幫助信息的上下文為HelpTopic指定上下文句柄(Context ID),一般與HelpCommand=HELP_CONTEXT一起使用,指定顯示HelpTopic。
如果用此種方式,那麼上例中程序變化如下:
Const KEY F1=H70 Sub Form_Load() CommonDialog1.HelpCommand=vbHelpContext CommonDialog1.HelpFile=DY.HLP End Sub Sub Command1_KeyDown(KeyCode As Integer,Shift As Integer) If KeyCode=KEY_F1 Then CommonDialog1.HelpContext=100 CommonDialog1.Action=6 End If End Sub Sub Text1_KeyDown(KeyCode As Integer,Shift As Integer) If KeyCode=KEY_F1 Then CommonDialog1.HelpContext=200 CommonDialog1.Action=6 End If End Sub
也可以利用關鍵字來指定幫助信息,則程序修改如下:
Const KEY_F1=H70 Sub Form_Load() CommonDialog1.HelpCommand=vbHelpKey CommonDialog1.HelpFile=DY.HLP End Sub Sub Command1_KeyDown(KeyCode As Integer,Shift As Integer) If KeyCode=KEY—F1 Then CommonDialog1.HelpKey=Command CommonDialog1.Action=6 End If End Sub Sub Text1—KeyDown(KeyCode As Integer,Shift As Integer) If KeyCode=KEY_F1 Then CommonDialog1.HelpKey=Text CommonDialog1.Action=6 End If End Sub
同樣,在程序運行過程中,把焦點移到任一控件(按鈕或文本框)上,再按下F1鍵,就可以得到當前焦點的在線幫助。