Windows 程式設計/編譯 HTML 幫助
在大多數程式中,選單將有一個名為“幫助”的彈出項。在幫助選單中,通常有一個“內容”或“索引”或“主題”選項。單擊這些選項時,會彈出一個幫助框。
這些幫助框被稱為“編譯 HTML 幫助模組”,或 .chm 檔案。這些幫助檔案可以使用微軟 HTML 幫助工作室從 HTML 原始碼編譯,微軟提供免費下載。
HTML 幫助模組可以從包含 HTML、DHTML、CSS 和 JavaScript 混合的原始檔編譯。這與用於編寫網頁的 HTML 完全相同,因此擁有網頁經驗的人在建立 HTML 幫助模組方面將佔有優勢。HTML、CSS 和 JavaScript 是非常適合圖形應用程式的語言,但功能遠不如 C 或 VB。幫助工作室包含許多不同的選項,例如您是否要包含一個索引視窗,是否要允許搜尋和索引,是否要有一個目錄,等等。可以選擇一個預設頁面,在首次載入幫助模組時顯示。幫助模組中的頁面可以使用超連結連結到模組中的其他頁面、計算機上的其他檔案,甚至網際網路上的資源。
HTML 幫助工作室附帶一個頭檔案("htmlhelp.h")和一個庫檔案("htmlhelp.lib"),這些檔案必須在您的專案中使用,才能從您的程式中呼叫 HTML 幫助模組。必須在 Htmlhelp.h 檔案之前包含 Windows.h,否則編譯器會輸出錯誤。Htmlhelp.h 定義了一個名為 HtmlHelp 的單一函式,可以在您的程式內部呼叫。
HWND WINAPI HtmlHelp(HWND hwndCaller, LPCTSTR pszFile, UINT uCommand, WORD_PTR dwData);
此函式返回一個指向 html 幫助視窗的控制代碼,如果您希望它這樣做,您的程式可以在相對較高的級別上與該視窗互動。第一個引數是呼叫(父)視窗的控制代碼。如果設定此引數,幫助視窗將成為您視窗的子視窗,並且可以與它通訊。如果將此設定為 NULL,幫助視窗將基本上是獨立的。“pszFile”引數是目標幫助模組的檔名。“uCommand”可能包含許多不同的命令,其中一些非常複雜和涉及。最簡單(也是最常見)的是 HH_DISPLAY_TOPIC 命令,它按正常方式顯示幫助,並允許使用者檢視和互動幫助模組。“dwData”可以可選地包含其他資料,具體取決於所使用的命令。
如果我們想開啟一個位於 c:/help/myhelp.chm 的幫助模組,可以使用以下命令
hwndHelp = HtmlHelp(hwndParent,
"C:\help\myhelp.chm",
HH_DISPLAY_TOPIC,
NULL);
現在,假設我們要在幫助模組中開啟一個特定頁面。假設我們的模組包含一個名為“example.htm”的頁面。我們可以透過稍微更改目標字串來直接開啟該頁面
hwndHelp = HtmlHelp(hwndParent,
"C:\help\myhelp.chm::example.htm",
HH_DISPLAY_TOPIC,
NULL);
而且,如果我們為幫助檢視器建立了多個視窗,我們可以強制將頁面顯示在幫助檢視器的特定視窗中。假設我們在 html 幫助模組中建立了一個名為“SideWin”的視窗。我們可以使用以下語法將我們的頁面(example.htm)載入到 SideWin 中
hwndHelp = HtmlHelp(hwndParent,
"C:\help\myhelp.chm||example.chm>SideWin",
HH_DISPLAY_TOPIC,
NULL);
有關更多高階選項以及對其他命令的討論,您應該檢視 MSDN 上的相關材料。
HTML 幫助工作室頂部有 5 個按鈕,從左到右依次是
- 新建
- 建立一個新的 HTML 檔案進行編輯
- 開啟
- 開啟一個現有的 HTML 檔案進行編輯
- 編譯
- 將當前專案編譯成一個幫助模組
- 檢視
- 檢視當前幫助專案
- 幫助
- 開啟一個幫助檢視器視窗
如果單擊“新建”按鈕(或者從選單欄中選擇“檔案>新建”),系統會提示您選擇要建立的新型別。首先,您應該建立一個新專案。
選擇建立新專案將開啟一個嚮導,它將引導您完成建立新專案的步驟。
HTML 幫助專案中可能包含 3 種不同的檔案型別:HTML 原始檔(.HTM)、目錄檔案(.HHC)和索引檔案(.HHK)。建立新專案後,您可以編輯並向專案新增所有這些型別的檔案。每個 HTML 幫助模組只能包含一個 .HHC 檔案和一個 .HHK 檔案。
啟動新專案並完成嚮導後,您將在幫助工作室視窗的左側看到一個側邊欄,它允許您編輯專案選項、目錄和索引。
在 Windows 上,可以使用以下命令將 CHM 檔案提取為純 HTML
hh.exe -decompile extracted filename.chm
這將解壓縮嵌入在 filename.chm 中的所有檔案到資料夾 extracted。
您也可以使用 HTML 幫助工作室反編譯 CHM 檔案。檔案 -> 反編譯... [需要引用]
7-Zip 將 .chm 檔案開啟為存檔,允許訪問所有內容。
在 Windows 上,選擇最頂部的主題,右鍵單擊並選擇列印。在彈出對話方塊中,選擇“列印此標題及其所有子主題”,單擊確定。在選擇印表機之前,在 %HOMEPATH%\Local Settings\Temp 中查詢名為 ~hh*.htm 的檔案。這是連線的 HTML。影像引用將在列印時引用 .chm 檔案。
在使用 apt 作為打包工具的 Linux 系統上,可以使用 extract_chmLib 將 CHM 檔案提取為純 HTML(第一個命令適用於基於 Debian 的作業系統)
$ sudo apt-get install libchm-bin $ extract_chmLib tero.chm tero/