Home
Microsoft HTML Help Workshop の使い方
目次の作成
- HTMLでヘルプを作成する
- [File] → [New] → [Project]を選択して[OK] → [次へ] → [Browse]を押し、[ファイルを開く]ダイアログで、HTMLのフォルダに移動後、[ファイル名(N):]にプロジェクト名(任意)を記入して[OK] → [次へ] → [完了]
- [Add/Remove topic files]
を押す → ヘルプに使うHTMLファイルを全て[Add]を押して追加し[OK]
- 「Change project options]
を押す → [General]タブで[Title:]にタイトルを、[Default file:]に最初に表示されるHTMLファイルを選択する → [OK]
- [Contents]タブ → [Create a new contents file]を選択して[OK] → コンテンツファイル名(任意)を記入して[OK]
- [Insert a page]
を押す → [General]タブで、[Entry Title:]にHTMLのタイトルを記入し、[Add...]を押して、そのタイトルのHTMLファイルを選択する → [OK]
- 6 の作業を、全てのHTMLファイルについて行う
- 修正は[Edit selection]
で、順番の入れ替えは[Move selection up / down] ![](img/up.bmp)
で、削除は[Delete selection]
で行う
- 全て追加し終わったら、[Project]タブ → [Save all files and compile]
を押す
[検索]タブと[お気に入り]タブの追加とウィンドウサイズの設定
- [Project]タブ → [Add/Modify Window Definitions]
を押す → WindowStyle1など適当にウィンドウ名を記入する(作成されるヘルプファイルには表示されない) → [OK]
- [Position]タブで[Autosizer]を押し、ウィンドウ全体の位置とサイズを指定する
- [Navigation Pane]タブの[Navigation pane width:]に左側の子ウィンドウの横幅を指定する
- [Navigation Pane]タブの[Tabs]の[Search tab]にチェックを入れると[検索]タブが追加され、[Favorites tab]にチェックを入れると「お気に入り」タブが追加される
- [Search tab]にチェックを入れた場合 → [次へ] → [Search tab]と[Compile full-text information]にチェック → [次へ] → [完了] → [OK]
- [Project]タブ → [Save all files and compile]
を押す
[キーワード]タブの追加
- [Index]タブ → [Create a new index file]を選択して[OK] → インデックスファイル名(任意)を記入して[OK]
- [Insert a keyword]
を押す → [General]タブで、[Keyword:]にキーワードを記入し、[Add...]を押して、そのキーワードにリンクするHTMLファイルを選択する → [OK]
- [keyword:]にキーワードを記入し、[Add...]を押してリンクするファイルのURLを選択する
- ウィンドウ名を既に付けている場合は、[Project]タブ → [Add/Modify Window Definitions]
を押す → [Files]タブ → [Index:]でインデックスファイルを選択して[OK]
- KLink キーワードを HTML ファイルに追加した場合は、「Change project options]
を押す → [Files]タブ → [Include keywords from HTML files]にチェックする
- [Save all files and compile]
を押す
[補足] KLink キーワードを HTML ファイルに追加するには
- HTML ファイルを開きます。
- ファイル内の開始と終了の
<BODY>
タグの間で、キーワードを追加する場所にカーソルを置きます。
- [Edit] メニューの [Compiler Information] をクリックし、[Keywords] タブをクリックします。
- [Add] ボタンをクリックし、ファイルに挿入するキーワードを指定します。複数のキーワードを追加する場合は、セミコロンで区切ります。
Visual C++ サンプルコード
#include <windows.h>
#include "htmlhelp.h"
#pragma comment(lib, "htmlhelp.lib")
DWORD g_dwCookie;
CALLBACK ProcWnd()
{
static char pathHelp[MAX_PATH];
switch(uMsg)
{
case WM_CREATE:
{
GetModuleFileName(NULL, pathHelp, sizeof(pathHelp));
char *p = strrchr(pathHelp, '\\');
if(p)
strcpy(p, "\\help.chm");
}
return 0;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDM_HELP: // ヘルプ(以前開いたタブ)
HtmlHelp(NULL, pathHelp, HH_DISPLAY_TOPIC, 0);
return 0;
case IDM_HELP_CONTENTS: // ヘルプ(目次)
HtmlHelp(NULL, pathHelp, HH_DISPLAY_TOC, 0);
return 0;
case IDM_HELP_INDEX: // ヘルプ(キーワード)
HtmlHelp(NULL, pathHelp, HH_DISPLAY_INDEX, (LPARAM)"");
return 0;
case IDM_HELP_SEARCH: // ヘルプ(検索)
{
HH_FTS_QUERY q;
ZeroMemory(&q, sizeof(HH_FTS_QUERY));
q.cbStruct = sizeof(HH_FTS_QUERY);
HtmlHelp(NULL, pathHelp, HH_DISPLAY_SEARCH, (LPARAM)&q);
}
return 0;
}
return 0;
case WM_CLOSE:
HtmlHelp(NULL, NULL, HH_CLOSE_ALL, 0);
HtmlHelp(NULL, NULL, HH_UNINITIALIZE, g_dwCookie);
DestroyWindow(hWnd);
PostQuitMessage(0);
return 0;
}
return DefWindowProc();
}
WinMain()
{
CreateWindow();
HtmlHelp(NULL, NULL, HH_INITIALIZE, g_dwCookie);
while (GetMessage(&msg, NULL, 0, 0))
{
if(HtmlHelp(NULL, NULL, HH_PRETRANSLATEMESSAGE, (DWORD)&msg))
continue;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
状況依存ヘルプ Download
- テキスト エディタで以下のような内容の .txt ファイルを作成する(ファイル名は任意、以下のサンプルコードでは、ctrl_help.txt)
.topic 1
ボタンです
.topic 2
スライダーです
.topic 3
チェックボックスです
- HTML Help Workshop でプロジェクトを新規作成し、[Project]タブで[HTML API information]
を押す
- [Text Pop-ups]タブ → [Text file...] → [Browse...]ボタンを押して、上で作成したテキストファイルを選択する → [OK] → [OK]
- [Project]タブ → [Save all files and compile]
を押す
Visual C++ 状況依存ヘルプのサンプルコード
#include <windows.h>
#include "htmlhelp.h"
#include "resource.h"
#pragma comment(lib, "htmlhelp.lib")
DWORD g_dwCookie;
CALLBACK ProcDlg()
{
static DWORD helplist[] = {IDC_BUTTON1,1,
IDC_SLIDER1,2,
IDC_CHECK1,3,
IDC_CHECK2,-1, // 不要の場合は-1
0,0}; // 最後は必ず0
static char pathHelp[MAX_PATH];
switch(uMsg)
{
case WM_INITDIALOG:
{
GetModuleFileName(NULL, pathHelp, sizeof(pathHelp));
char *p = strrchr(pathHelp, '\\');
if(p)
strcpy(p, "\\help.chm::/ctrl_help.txt");
}
break;
case WM_CONTEXTMENU: // 右クリックの場合
{
HWND hWnd = (HWND) wParam;
if(GetDlgCtrlID(hWnd) > 0){
HtmlHelp(hWnd, pathHelp,
HH_TP_HELP_CONTEXTMENU, (DWORD)helplist);
}
}
break;
case WM_HELP: // [F1]キーが押された場合
{
LPHELPINFO lphi = (LPHELPINFO) lParam;
if(lphi->iContextType == HELPINFO_WINDOW){
HWND hWnd = (HWND)lphi->hItemHandle;
if(GetDlgCtrlID(hWnd) > 0){
return HtmlHelp(hWnd, pathHelp,
HH_TP_HELP_WM_HELP, (DWORD)helplist) != NULL;
}
}
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
SendMessage(hDlg,WM_CLOSE,0,0);
break;
case IDCANCEL:
SendMessage(hDlg,WM_CLOSE,0,0);
break;
default:
return FALSE;
}
break;
case WM_CLOSE:
HtmlHelp(NULL, NULL, HH_UNINITIALIZE, g_dwCookie);
DestroyWindow(hDlg);
PostQuitMessage(0);
break;
default:
return FALSE;
}
return TRUE;
}
WinMain()
{
HWND hDlg = CreateDialog(hInst, MAKEINTRESOURCE(IDD_DIALOG1),
NULL, DlgProc);
ShowWindow(hDlg, nCmdShow);
HtmlHelp(NULL, NULL, HH_INITIALIZE, g_dwCookie);
while (GetMessage(&msg, NULL, 0, 0))
{
if(IsDialogMessage(hDlg, &msg))
continue;
if(HtmlHelp(NULL, NULL, HH_PRETRANSLATEMESSAGE, (DWORD)&msg))
continue;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
デコンパイル
CHMファイルをデコンパイルすると、作成に使われたHTMLやHHCファイルなどを復元できる
- [File] メニューの [Decompile] をクリックします。
- [Destination folder] テキスト ボックスに、復元先のフォルダ名を入力します。
- [Compiled help file] テキスト ボックスにデコンパイルするヘルプ (.chm) ファイル名を入力します。