17. 線上輔助功能

 

工具提示(ToolTips)、狀態列、輔助精靈和各種線上說明都是讓應用程式易用易懂的關鍵。這些工具有些內建於Visual Basic裡,有些則不是顯而易見。例如,Microsoft Help Workshop (HCW.EXE)放在Visual Studio CD-ROM的 \COMMON\TOOLS目錄裡,而Microsoft HTML Help Workshop (HHW.EXE)則放在一個自動解壓縮的ZIP檔裡,這個ZIP檔的檔名叫做HTMLHELP.EXE。(存放在Visual Studio CD-ROM裡的 \HTMLHELP目錄裡。)

在這一章裡,我們要討論一些內建的功能,引導你學習如何建立WinHelp線上說明以及學習如何建立HTML格式的線上說明。因為篇幅的關係,我們並不打算討論所有有關說明檔的課題,而且,Help Workshop和HTML Help Workshop本身就包含了一些相當好的輔助說明。

另外,我們要解釋如何把說明功能整合到Visual Basic應用程式裡。以上提到的這些技術從來沒有被一起討論過,本章首次將這些課題收集在一起。

如何加入工具提示?
 

工具提示是圖形界面元素(如工具列按鈕、指令按鈕和狀態列圖形)的文字描述。當使用者把滑鼠游標停留在某個物件上,工具提示就會自動顯示出來,如圖17-1。所有Visual Basic既有的控制項都有ToolTipsText屬性,只要在這個屬性中填入適當的文字,控制項就可以產生工具提示的效果。

大部分的ActiveX控制項都有ToolTipsText屬性,但是含有內含元件的ActiveX控制項(如Toolbar控制項和Status Bar控制項)可以讓你藉由「屬性頁」對話方塊加入工具提示。


 

 圖17-1 執行中的ToolTip

如果要為工具列中的按鈕加入工具提示,只要以下幾個步驟就可以完成:

  1. 在表單上加入一個Toolbar控制項。
  2. 在「屬性」視窗中點選兩下(自訂)屬性,Visual Basic會叫出「屬性頁」對話方塊。
  3. 點選對話方塊中的「按鈕」頁籤。
  4. 點選「插入按鈕」加入一個按鈕到工具列裡。
  5. 在「工具提示」一欄中填入適當的提示文字。.
  6. 完成後按下「確定」。

參考資料

 第三十二章"資料庫" 裡的Jot應用程式也會介紹工具提示

有關建立Toolbar控制項的方法,請參閱 第十三章"視覺界面" 


如何在應用程式中加入狀態列?
 

要加入狀態列(StatusBar)到應用程式中,可以用StatusBar控制項,這個控制項包含在Microsoft Windows Common Controls 6.0裡 (MSCOMCTL.OCX)。StatusBar控制項通常會在表單底部建立一個視窗,視窗最多可以包含16個面板(Panel)物件,面板物件的屬性可以讓你顯示文字或資料,例如自動更新的時間和日期,你也可以合併文字和圖形放在每一個面板上。

你可以在「屬性頁」對話方塊中的頁籤下,設定面板的數目以及面板的屬性內容。要開啟「屬性頁」對話方塊,可以在表單上的StatusBar上按下滑鼠右鍵,選取「屬性」;也可以在「屬性」視窗中選取(自訂)屬性,點選"..."(三個點)按鈕。

圖17-2所顯示的是一個有三個StatusBar控制項的表單。在線上說明中有許多關於StatusBar控制項和Panel物件的資訊。


 

 圖17-2 執行中的StatusBar控制項

參考資料:

請參閱 第三十四章"進階應用程式" 中的Dialogs應用程式。


如何在程式啟動時顯示每日小秘訣?
 

Microsoft Office的「每日小秘訣」幫助許多使用者學會了操作上的捷徑,這些小秘訣對新手而言真的是非常實用。Visual Basic提供了一個範本,方便你建立類似「每日小秘訣」這樣的表單。圖17-3顯示的就是Tip of the Day範例程式執行的情形。


 

 圖17-3 Tip of the Day範例程式(TipOfDay.VBP)的執行情形

如果要加一張「每日秘訣」(或Tip of the Day)表單到你的應用程式裡,請看以下這幾個步驟:

  1. 從「專案」功能表中選取「新增表單」。
  2. 在「新增表單」對話方塊中選取「每日秘訣」,然後按下「開啟舊檔」。Visual Basic會把一張frmTip.frm範本表單加到你的專案裡。
  3. 加一些程式碼讓frmTip.frm表單在程式啟動時即可被顯示出來。
  4. 寫一個文字檔TIPOFDAY.TXT,記錄所有的秘訣,存放在專案目錄中。

「每日小秘訣」表單所需的程式碼並不多,然而這裡有幾件事要注意一下:

  • 「每日小秘訣」表單會在系統登錄資料中記錄應用程式的Show Tips At Startup值,以便使用者能關掉這張表單。你應該在應用程式裡加入一項打開這張表單的功能。
     
  • 表單frmTip可以卸載它本身,因此你需要在使用Show物件方法時加上檢查錯誤的程式碼。另外,你可以在載入frmTip之前先檢查系統登錄中的設定。
     
  • 如果不打算改變TIPOFDAY.TXT或者想要防止這個檔案被意外地刪除掉,你可以把檔案內容放在資源檔中,讓它和應用程式一起被編譯。
     

TipOfDay.VBP範例程式包含在隨書光碟中,以上三點注意事項都會展示在這個程式裡。

如何以輔助精靈導引使用者完成工作?
 

輔助精靈可以一步一步地引導使用者完成複雜的工作,這種協助使用者的方式遠比一大堆文件來得有用。任何複雜的程序性工作都可以被考慮用精靈來完成,尤其是只做一次的工作,像安裝應用程式或建立資料庫這類工作,特別適用精靈作為輔助工具。

Visual Basic的「精靈管理員」增益功能可以產生精靈範本,範本中包括一個程式碼模組,這個模組以增益功能的方式使用自訂的精靈。

圖17-4中的VBCal Wizard展示了如何用多個表單來建立一個精靈應用程式。

輔助精靈可以由幾個獨立的程式所組成,也可能是由某個應用程式的部分功能,它應該具備以下這幾項特點:

  •  介紹文字: 描述準備完成的工作,或是描述完成這項工作時,使用者所需具備的條件。
     
  •  工作步驟: 一次只顯示一個工作步驟,而且使用者必須能夠來回在各步驟之間,任何使用者所輸入的資料必須在進到下一步之前予以檢查。
     
  •  完成的訊息: 讓使用者知道他成功地完成了工作。
     

參考資料

 第三十一章"日期與時間" 會完整地介紹上面提到的VBCal輔助精靈應用程式。


如何建立說明檔?
 

Help Workshop改進了舊式的命令列導向的說明檔編譯器的限制,例如,Help Workshop可以處理較大的原始檔案,而舊式的說明檔編譯器在處理較大的圖形檔時,可能會面臨記憶空間不足的問題。另一方面,Help Workshop提供了圖形界面而且可以處理長檔名,如圖17-5,但舊式的說明檔編譯器則無這些功能。


 

 圖17-4 VBCal Wizard(VBCal.VBP)顯示了介紹文字、工作步驟和完成的訊息等畫面

以Help Workshop建立說明檔時,Help Workshop會產生一個說明檔的專案檔(*.HPJ),這個檔案列出了建立說明檔所需的所有原始文件檔檔名,原始文件的格式必須是RTF格式,我們可以用Microsoft Word或其他Microsoft的文字編輯程式來產生RTF格式的檔案。在編譯說明檔時,Help Workshop會啟動說明檔編譯器(HCRTF.EXE)並且顯示編譯錯誤訊息和警告訊息,如圖17-6。


 

 圖17-5 Microsoft Help Workshop(HCW.EXE)


 

 圖17-6 編譯後Help Workshop會顯示錯誤、警告及其他訊息

對說明檔主題的基本認識
 

在說明檔的原始文件檔中,一個說明主題與另一個主題以分頁符號做為分隔,你必須用註腳來設定說明主題的抬頭、關鍵字以及不可重複的主題代碼,說明系統會以主題代碼連結不同的主題。在某個說明主題的原始文件中,你可以用底線和隱藏文字建立這個主題與其他主題的連結。圖17-7顯示的是一個說明主題及其相關部份。


 

 圖17-7 說明主題及其相關部份

以下這張表列出了可以加到說明主題原始文件中的註腳及格式符號:

註腳/格式符號 意義
說明主題代碼;用來從另一個主題連結到這個主題。
說明主題的標題。
搜尋關鍵字。這些關鍵字會被列在說明系統的索引 中,若關鍵字不只一個,應以分號(;)予以分隔 。它可以和KLink併用 ,以建立關鍵字的連結關係。
關聯關鍵字。類似K註腳 ,但註腳中的文字不會出現在索引中。這些註腳與ALink併用 ,以建立關鍵字的連結關係。
巨集。當主題被顯示時,註腳文字所代表的巨集會 被執行。
雙底線 連結到另一個說明主題。雙底線註腳的後面必須以隱藏文字指明另一個主題的說明主題代碼。
底線 立即顯示連結。以立即顯示方塊顯示某個名詞的定 義以及其他簡短的說明主題。
隱藏文字 某個連結的說明主題代碼。這個代碼必須符合專案中某個說明主題的代碼,否則編譯時會發生錯誤。

建立一個專案檔
 

專案檔是一個由Help Workshop產生的文字檔,專案檔包含了建立某個說明檔所需檔案的資訊以及其他的設定,專案檔的附屬檔名為HPJ。若要建立一個新的專案檔,請從File功能表中選取New,在New對話方塊中選擇Help Project,然後按下OK。在Project File Name對話方塊中,選擇欲存入專案檔的路徑,輸入專案檔名,檔名中必須含附屬檔名HPJ,然後按下Save。圖17-8所顯示的是專案視窗。

Help Workshop專案視窗中的按鈕會呼叫出不同的對話方塊,讓你設定專案檔。例如,如果按下Files按鈕,就可以加入說明主題的原始檔到專案中。


 

 圖17-8 Help Workshop的專案視窗

編譯以及測試說明檔
 

說明檔編譯工作的主要目的,是將說明主題的原始檔、圖形和專案檔整合在一起,以建立一個完整的說明檔。在專案視窗中按下Save and Compile按鈕後,Help Workshop就會啟動編譯器(HCRTF.EXE);等編譯工作完成後,任何的錯誤訊息和警告訊息都會被列出。若要測試新建立的說明檔,在Help Workshop的File功能表中選取中按下Run WinHelp選項,然後再按下View Help File對話方塊中的View Help按鈕。

對映主題代碼
 

在說明檔中的說明主題代碼是一個字串,例如,你可能在#註腳中使用IDH_FileMenu,而在你的應用程式中,說明主題的代碼則是數字,例如,「檔案」功能表的HelpContextID屬性值設為1001。Help Workshop會將代表說明主題的字串和說明專案檔中 [MAP] 區段裡的數字予以撮合。專案檔的 [MAP] 區段的內容如下:

[MAP]
IDH_FILEMENU=1001        ; All menus start with 1000
IDH_FILEOPENMENU=1002
IDH_FILECLOSEMENU=1003

使 [MAP] 區段中的資訊與你應用程式中的資料保持一致化是一件非常重要的事。有些工具,例如Help Breeze,可以產生含有這些說明主題代碼的BAS模組。我們可以用列舉集合Enum來定義:

Enum HelpContext
    IDH_FILEMENU=1001        ' All menus start with 1000
    IDH_FILEOPENMENU=1002
    IDH_FILECLOSEMENU=1003
End Enum

使用全文檢索和章節目錄
 

Windows 95和Windows NT增加了兩個說明檔的功能:全文檢索(Full-text Search)和章節目錄(Table of Contents)。全文檢索功能包含在32位元的WINHLP32.EXE中,但即使說明檔是編譯給Windows 3.1的使用者,只要用WINHLP32.EXE開啟這個說明檔,一樣也可以支援全文檢索。

Windows會自動在說明檔中建立字彙資料庫以便讓Find Setup Wizard完成工作,如圖17-9。


 

 圖17-9 Find Setup Wizard精靈

線上說明的內容主題清單中的資料來源是一個文字檔,我們稱之為內容檔(Contents File)。內容檔可以在專案檔的「Options」段落中找到,其格式十分簡單,請看以下檔案的內容:

; From HCW.CNT
1 Getting Started     ; Top-level topic, not a link
2 What is Help Workshop?=BAS_THE_HELP_COMPILER  ; Second-level topic
2 Help Workshop components=SDK_FILES_DOCS
2 Notational Conventions=SDK_NOTE_CONVENTION
1 What's New in Version 4.0
2 WinHelp 4.0
3 Redesigned User Interface  ; Third-level topic
4 New Help Topics dialog box=NEW_WINHELP_INTERFACE
4 New context menu=NEW_WINHELP_CONTEXT_MENUS
4 New Options menu=NEW_WINHELP_OPTIONS_MENU
4 New annotation capabilities=NEW_ANNOTATION
4 Improved copying=NEW_WINHELP_COPY
4 New printing options=NEW_WINHELP_PRINTING
4 New ESC key function=NEW_KEY
4 Background color override=NEW_COLOR

要編修內容檔(CNT),你可以從Help Workshop中的File功能表中選取Open選項來開啟檔案,Help Workshop將會以階層式組織的表現方式,如圖17-10所示,將內容檔呈現出來,以利編修工作的進行。另外,你可以在Help Workshop的File功能表中選擇New,建立一個新的內容檔。


 

 圖17-10 內容檔範例

建立說明視窗
 

由Help Workshop所定義的說明視窗可以顯示說明檔中的主題,要從Help Workshop中建立說明視窗,請在Help Workshop的專案子視窗中按下Windows按鈕,然後填完在圖17-11對話方塊中的設定項目。


 

 圖17-11 用來定義說明視窗的Windows Properties對話方塊

若要在說明視窗中顯示某個主題,你可以在說明主題原始檔中的主題代碼後面打入">On Top"即可。這樣,使用者點選該連結之後,說明主題就會被顯示在說明視窗中。在內容檔中加入視窗名稱也是用同樣的方式:在主題代碼後面打入">On Top"。當某個主題中被加上了">"註腳,那麼使用者如果從「索引」中選擇了該主題,這個主題就會被顯示在自訂的視窗中。

使用巨集
 

在說明系統中,巨集可以執行特別的工作。在說明檔中,巨集執行的時機如下:當某個主題顯示時,當使用者按下按鈕時,或是當使用者點選某個連結時。如果要在某個連結上加上一個巨集,必須在連結的隱藏文字中加上一個"!"註腳和巨集名稱。例如,See Also!KLink (API,WinHelp)會執行KLink巨集,以顯示所有包含關鍵字"API"和"WinHelp"的主題,如圖17-12所示。


 

 圖17-12 Klink巨集顯示相關主題

參考資料:

請參閱Microsoft Help Workshop 95 Help Authoring Kit (Microsoft Press,1995)有關Windows 「說明」以及Help Workshop的資訊。


如何使用WinHelp API函式在專案中加入說明檔?
 

你可以呼叫WinHelp API函式來開啟一個說明檔,這是一個可靠的老方法。在以下的範例中,當使用者在表單上按下滑鼠左鍵時,Visiual Basic說明檔的內容主題會立刻顯示。

Option Explicit

Private Declare Function WinHelp _
Lib "user32" Alias "WinHelpA" ( _
    ByVal hWnd As Long, _
    ByVal lpHelpFile As String, _
    ByVal wCommand As Long, _
    ByVal dwData As Long _
) As Long

Const HELP_TAB = &HF

Private Sub Form_Click()
    Dim lngX
    lngX = WinHelp(hWnd, "notepad.hlp", HELP_TAB, 0)
End Sub

我們把表單的hWnd屬性傳給WinHelp函式的hWnd參數;lpHelpFile參數所含的字串是說明檔的檔名;wCommand參數接收的是一個預先定義的常數,這個常數用來控制WinHelp函式。(你可以在這些地方找到這些常數:「瀏覽物件」對話方塊的MSComDlg項目中;Visaul Basic線上說明的Help Constants主題;本節所提供的一張常數表)。根據wCommand的不同,dwData參數可以接收不同型別的資料。如果wCommand被設定為cdlHelpContext,dwData的值就會決定要顯示哪一個說明主題。

下面這個WinHelp函式會啟動Visual Basic的說明檔,然後顯示一個特定的主題。(要在工具箱中加入通用對話方塊控制項)。

Private Sub Form_Click()
    Dim lngX
    lngX = WinHelp(hWnd, "notepad.hlp", cdlHelpContext, 1001)
End Sub

因為我們將wCommand參數設為cdlHelpContext常數,而且將dwData參數設定為"頁首頁尾"主題代碼,所以,當說明檔被啟動時,"頁首頁尾"主題會被顯示出來。(有些建立說明檔的工具,如RoboHelp,會自動產生一個含所有主題代碼常數的BAS模組檔。)

以下這張表列出了一些wCommand可以接受的常數,每一個常數使WinHelp函式執行一個特定的動作。(這些常數大部分是Visaul Basic為通用對話方塊控制項定義的,因此它們前面會有cdl字首)。例如,若要顯示有關如何使用說明功能的資訊,請用cdlHelpHelpOnHelp。

常數 描述
cmdHelpContext 1 顯示某個特定說明主題的本文。
CdlHelpQuit 2 關閉某個說明檔。
CdlHelpIndex 3 顯示某個說明檔的索引。
HELP-FINDER 11 叫出「說明主題」對話方塊,同時打開前一次被打開的頁籤。你必須自己定義這個常數,因為它不是VB預先定義的常數。
HELP-TAB 15 叫出「說明主題」對話方塊,同時打開dwData所指定的頁籤(「內容」頁籤為0,引)頁籤為-2,「尋找」頁籤為-1)。你必須自己定義這個常數,因為它不是VB預先定義的常數。
CdlHelpContents 3 顯示目前說明檔的主題總覽(Content stopic)這個常數是為了與早期的說明功能相容而設計的常數,新的應用程式應該以HELP-FINDER或HELP-TAB叫出「說明主題」對話方塊。
CdlHelpHelpOn Help 4 顯示說明功能本身的線上說明。
CdlHelpSetIndex 5 為多重索引的說明設定目前的索引。
CdlHelpSetContents 5 指定某個說明主題的內容為主題總覽(Contents Topic)。
CdlHelpContextPopup 8 顯示由本文編號所指定的主題。
CdlHelpForceFile 9 建立一個只以一種字型顯示的說明檔。
CdlHelpKey 257 顯示對某個關鍵字的說明。
CdlHelpCommandHelp 258 顯示對某個指令的說明。
CdlHelpPartiaKey 261 呼叫Windows說明功能的搜尋引擎(Search Engine)。

這些常數是為通用對話方塊控制項所定義的常數,你可以從「瀏覽物件」對話方塊中把它們複製下來,貼到你的程式裡,或者,你可以把通用對話方塊控制項加到應用程式中,這樣,所有以dlg為字首的常數就可以使用了。


參考資料:

請參閱 第二十九章"圖形" 中的Lottery應用程式有關WinHelp的部分。


如何在專案中加入F1鍵的說明功能?
 

你可能曾經用過一些具有說明功能的應用程式,當這種應用程式在執行時,如果在目前取得駐點的控制項或表單上按下功能鍵,應用程式會叫出說明功能,顯示與這個控制項或表單相關的說明主題。這種由功能鍵啟動的說明功能,必須靠該控制項的HelpContextID屬性和App物件的HelpFile屬性共同完成。

App物件的HelpFile屬性設定應用程式所使用的說明檔名稱及路徑;作用中控制項的HelpContextID屬性則決定當使用者按下鍵時,應用程式應該顯示哪一個說明主題。如果使用者按下鍵時,控制項HelpContextID的內容是0,則系統會以這個控制項所在的表單為對象,取得這張表單的HelpContextID屬性值為說明主題的代碼,顯示這個主題的說明本文。若表單的HelpContextID也是0,那麼就顯示說明檔的主題總覽。

我們可不可以不按鍵就能叫出與某個控制項相關的說明檔呢?可以。這裡有一個小技巧提供給你:只要在程式中用SendKeys指令送出按鍵訊息,就可以辦到。

我們用以下這段程式說明這個技巧:

Private Sub Form_Load()
    App.HelpFile = "notepad.hlp"
End Sub

Private Sub cmdHelp_Click()
    cmdHelp.HelpContextID = 1001
    SendKeys "{F1}"
End Sub

在Form_Load事件程序中,我們設定了說明檔的名稱和路徑;cmdHelp_Click事件程序則把cmdHelp控制項的HelpContextID屬性設為準備顯示的主題代碼,然後送出的按鍵訊息。HelpFile屬性和HelpContextID屬性可以在執行時期予以設定,如上例,也可以在設計階段設定。

功能表選項也有HelpContextID屬性,但只有當該選項被選取而且鍵被按下時,說明主題才會被顯示。如果在功能表選項的Click事件程序中使用SendKey指令,如下面的程式,功能表選項的HelpContextID所指定的主題並不會顯示出來,你所看到的主題卻是由擁有駐點的控制項(透過其HelpContextID屬性)所指定的主題。

Private Sub mnuHelp_Click()
    SendKeys "{F1}"
End Sub

這是因為當使用者點選該功能表選項之後,功能表就立刻消失了。因此,在SendKey指令還來不及送出按鍵訊息之前,駐點已經轉給表單上的某個控制項。

如何使用通用對話方塊控制項在專案中加入說明檔?
 

通用對話方塊控制項提供了一個很有彈性的方式讓我們使用說明檔。請在表單中加入一個通用對話方塊控制項,設定它的說明檔相關屬性,然後用ShowHelp方法啟動說明系統,就是這麼容易。下面這段程式啟動Windows線上說明中的線上說明:

Private Sub cmdHelpContents_Click()
    dlgCommon.HelpCommand = cdlHelpHelpOnHelp
    dlgCommon.ShowHelp
End Sub

注意:

如果Windows找不到說明檔的內容檔,那麼把HelpCommand屬性設定為cdlHelpContents ,系統會顯示說明檔的第一個主題。


以下這個例子在功能表選項被點選時,會顯示某個特定的說明主題:

Private Sub mnuHelp_Click()
    dlgCommon.HelpFile = "notepad.hlp"
    dlgCommon.HelpCommand = cdlHelpContext
    dlgCommon.HelpContext = 1001
    dlgCommon.ShowHelp
End Sub

如何在表單中加入「這是什麼」功能?
 

如果一張表單具有「這是什麼」的功能,它的標題列會有一個問號按鈕,按下這個按鈕,滑鼠游標的形狀會變成一個箭頭加上問號的特別圖形。以這個特殊形狀的滑鼠游標點選表單上的某個控制項,你會看見一個快顯視窗顯示著該控制項的說明主題。

要在Visaul Basic的表單和控制項中加入「這是什麼」功能並不困難:首先把表單的WhatsThisButton和WhatsThisHelp屬性設為True,然後把表單的BorderStyle屬性設為"1- 單線固定"或是"3- 雙線固定對話方塊"。圖17-13的表單標題區有一個問號按鈕。


 

 圖17-13 標題列有問號按鈕的表單

要決定哪一個說明檔該被啟動,必須要把App物件的HelpFile屬性設為說明檔的路徑和檔名。你可以在設計階段或程式執行階段設定HelpFile屬性。如果在設計階段設定,請從「專案」功能表中選擇專案的「屬性」,在「專案屬性」對話方塊中點選「一般」頁籤,然後在「說明檔名稱」一欄中填入說明檔的路徑及檔名。如果在執行階段設定HelpFile屬性,請在適當的程序中指定說明檔的路徑及檔名給App.HelpFile即可。

最後,為了要決定哪一個說明主題該被顯示,必須把該控制項的WhatsThisHelpID屬性設為說明主題的主題代碼。

WhatsThisMode方法
 

還有另一種使用「這是什麼」快顯說明的方式:你可以在程式中用表單的WhatsThisMode方法來啟動特殊形狀的滑鼠游標。尤其當你想為表單加入「這是什麼」功能,但表單的BorderStyle卻被設為"2- 大小可以調整",這種技巧就顯得很有用。圖17-14顯示的是當「Get Help」按鈕被按下後,表單啟動了「這是什麼」功能。


 

 圖17-14 「這是什麼」說明功能可以被WhatsThisMode方法所啟動

當「Get Help」按鈕被按下之後,滑鼠游標會改變為特殊的箭號加問號,「這是什麼」說明功能同時也被啟動了,效果就和前一個例子的效果一樣。我們只要把表單的WhatsThisHelp屬性設為True,然後在指令按鈕的Click事件程序中加入一行程式碼即可。以下就是程式內容:

Private Sub cmdGetHelp_Click()
    WhatsThisMode
End Sub

如何建立HTML Help線上說明?
 

如果你現在正在發展新的應用程式,也許你應該考慮以Microsoft新的HTML Help格式來建立線上說明系統。現在所有Visual Studio的線上說明都是以HTML Help格式寫成的,而且Windows 98的線上說明也是如此。雖然WINHELP32.EXE仍可以在Windows 98和未來的Microsoft作業系統中被使用,WINHELP32.EXE很可能不會再有任何功能上的改進。目前Microsoft的新焦點是HTML Help。圖17-15顯示的是透過HTML Help瀏覽器看到的線上說明。


 

 圖17-15 以HTML Help瀏覽器瀏覽一個HTML Help檔案

你可以用Microsoft HTML Help Workshop來建立HTML Help說明檔,這個應用程式在Visual Studio CD-ROM的 \HTMLHELP目錄裡,以自動解壓縮檔HTMLHELP.EXE存放。

HTML Help Workshop有以下這幾個元件:

  •  HTML Help Workshop(HHW.EXE): 讓你產生或編修內容檔、索引檔和HTML檔。
     
  •  HTML Help Image Editor(FLASH.EXE): 可以捕捉瞬間畫面並且可以讓你修改和轉換影像檔。
     
  •  HTML Help Authoring Guide(HTMLHELP.CHM): 提供完整的HTML Help Workshop技術文件。
     
  •  HTML Help Engine (HH.EXE): 可以顯示編譯過的HTML Help檔(.CHM),這種編譯過的檔案是HTML Help原始檔(.HTML)的壓縮版。
     
  •  HTML Help Converter DLLs: 轉換WinHelp專案成為HTML Help專案。
     
  •  HTML Help Active X Control(HHCTRL.OCX): 提供HTML Help的內容一覽表、索引、相關主題、視窗控制項及其他說明檔功能。
     
  •  HTML Help Java Applet Control (HHCTRL.CLASS): 提供HTML Help的內容一覽表、索引及相關主題等功能給HTML檔案中的Java Script。
     
  •  HTML Help Authoring DLL: 提供有關內容一覽表的額外資訊。
     

轉換WinHelp專案成為HTML Help專案
 

HTML Help Workshop有一個輔助精靈可以協助你把WinHelp專案轉換成HTML Help專案。如果要啟動這個New Project Wizard,請從File功能表中選擇OPEN,並且指定一個WinHelp專案檔(.HPJ)。圖17-16顯示的是New Project Wizard的第一個畫面。


 

 圖17-16 只要在HTML Help Workshop裡開啟一個.HPJ檔就可以把WinHelp專案轉換成HTML Help

New Project Wizard會把WinHelp專案檔轉換成相關的HTML檔,如下表所示:

檔案種類 WinHelp副檔名 HTML Help副檔名
專案檔 .HPJ .HHP
內容檔 .CNT .HHC
索引檔 (無) .HHK
來源檔 .RTF .HTM(每個主題一個檔案)

轉換的程序可以很順利地處理大部分標準的WinHelp元素。然而,並非所有的WinHelp巨集和超圖形(Hypergraphic)都可以涵蓋到來源檔中。因此,在你使用經過轉換的HTML Help檔之前,你可能要花費一番工夫整理一下。HTML Help Authoring Guide (HTMLHELP.CHM)裡把一些轉檔的相關事項都記錄在Readme主題中。

使用HTML Help控制項
 

HTML Help控制項(HHCTRL.OCX)對於See Also項目可以提供快顯功能表或是對話方塊,如圖17-17。圖17-17的HTML碼放在隨書光碟中的HTMLCTRL.HTM這個檔案裡,以下是它的完整內容:

<HTML><HEAD><TITLE>HTML Help Control (HHCtrl.OCX)</TITLE><STYLE>
BODY {  background: white }</STYLE></HEAD><BODY TOPMARGIN=12 LEFTMARGIN=10>
<P>Use the HTML Help control to create buttons that display 
pop-up menus that display links to other topics, as shown below:</P><P>
<OBJECT ID=hhctrl TYPE="application/x-oleobject"
        CLASSID="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"
        CODEBASE="file://htmlhelp/files/hhctrl.ocx#Version=4,0,0,21"
        WIDTH=32        HEIGHT=32        HSPACE=4>
    <PARAM NAME="Command" VALUE="Related Topics, MENU">
    <PARAM NAME="Button" VALUE="Bitmap:help.bmp">
    <PARAM NAME="Item1" VALUE="Topic1;..\topics\topic1.htm">
    <PARAM NAME="Item2" VALUE="Topic2;..\topics\topic2.htm">
    <PARAM NAME="Item3" VALUE="Topic3;..\topics\topic3.htm">
    <PARAM NAME="Item4" VALUE="Topic4;..\topics\topic4.htm"></OBJECT></P>
<P>The HTML Help control can also display a dialog box containing 
the See Also links, as shown here:</P></P><P>
<OBJECT ID=hhctrl TYPE="application/x-oleobject"
        CLASSID="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"
        CODEBASE="file://htmlhelp/files/hhctrl.ocx#Version=4,0,0,21"
        WIDTH=32        HEIGHT=32ALIGN=BOTTOMHSPACE=4>
    <PARAM NAME="Command" VALUE="Related Topics">
    <PARAM NAME="Button" VALUE="Text:See AlsoDear John, How Do I... ">
    <PARAM NAME="Item1" VALUE="Topic1;..\topics\topic1.htm">
    <PARAM NAME="Item2" VALUE="Topic2;..\topics\topic2.htm">
    <PARAM NAME="Item3" VALUE="Topic3;..\topics\topic3.htm">
    <PARAM NAME="Item4" VALUE="Topic4;..\topics\topic4.htm"></OBJECT></P></BODY>
</HTML>


 

 圖17-17 以HTML Help控制項顯示相關主題

前面介紹的HTML碼用Command參數來決定控制項是否該顯示一個快顯功能表(VALUE = "Related Topics,MENU")還是一個對話方塊(VALUE ="Related Topics")。Button參數的值則用來決定控制項的外觀應該是用bitmap、圖像還是文字來表現。

HTML Help控制項只能用在HTML或是DHTML網頁裡,你不能把文字放在Visual Basic的表單或其他收納器裡。


參考資料:

Microsoft的網站 http://www.microsoft.com/workshop/author/htmlhelp 提供了有關HTML Help Workshop的最新資訊以及文件,請參閱。

另請參閱The Official Guide to Microsoft HTML Help by WexTech Systems,Microsoft Press一書。