「状況依存ヘルプ」(context-sensitive help)とは、ユーザがアプリケーションの実行中に呼び出すヘルプです。
HTML Helpでは、フィールドレベルとウインドウレベルの状況依存ヘルプを設定できます。
フィールドレベル
- 操作中にウインドウのタイトルバー、またはダイアログの
ボタンクリックした後、アプリケーションの項目をクリックした場合などに、対応するヘルプのポップアップを表示します。What's
This Help、ポップヒントヘルプなどとも呼ばれます。
- 状況依存ヘルプ用に、決められたフォーマットのトピックファイル(*.txt)を新たに作成する必要があります。
ウインドウレベル
- ダイアログの[Help]ボタンをクリックした場合に、対応するヘルプをHTML Helpヘルプウインドウに表示します。
フィールドレベルの状況依存ヘルプ
1.テキストファイル(*.txt)を作成する
フィールドレベルの状況依存ヘルプのトピックは、テキストファイル(*.txt)に記述します。
通常のエディタなどで、次の書式でトピックを記述してください。
.topic トピックID(改行)
トピックの本文
- 「.topic」と「トピックID」の間は、半角スペースを入れます。
- トピックIDは各トピックでユニークな任意の文字列(半角英数字)を指定します。WinHelpの場合と同様「IDH_」から始めることが推奨されています。
例)
.topic IDH_CLOSE
このボタンをクリックすると、ファイルを保存します。
.topic IDH_OPEN
このボタンをクリックすると、ファイルを開きます。
.topic IDH_EDIT
このボタンをクリックすると、ファイルを閉じます。
2.ヘッダファイルを作成する
トピックIDとコンテキスト番号の対応を記述したヘッダファイル(拡張子 .hのテキストファイル)を作成します。
テキストエディタなどで、次の書式で記述してください。
#define トピックID コンテキスト番号(改行)
- 「#define」「トピックID」「コンテキスト番号」の間は、それぞれ半角スペースを入れます。
- 1行が1トピックになります。
- コンテキスト番号には、各トピックでユニークな任意の番号(10進数または16進数)を指定します。
例)
#define IDH_CLOSE 20000
#define IDH_OPEN 20010
#define IDH_EDIT 20020
3.[TEXT POPUPS]にテキストファイルとマップファイルを指定する
- [Project]タブの
(HTMLHelp
API information)をクリックします。
[HTMLHelp API information]ダイアログが表示されます。
- [Text pop-ups]タブの[Text file]ボタンをクリックし、状況依存ヘルプのテキストファイルを指定します。
- [Header file]ボタンをクリックし、ヘッダファイルを指定します。
- [OK]ボタンをクリックします。
[Project]タブの[TEXT POPUPS]セクションに設定内容が表示されます。
[TEXT POPUPS]
sample.h
sample.txt
- VBから上記の方法で、フィールドレベルの状況依存ヘルプを呼び出す場合、以前このページではマップファイルを使わずに直接コンテキスト番号のみを指定するように解説していました。この方法でも動作するのですが、上記の方法でマップファイルを指定しても動作して、こちらの方が推奨されていることが分かりました。
VBから呼び出す場合は、アプリケーションオブジェクトのHelpFileプロパティに、ポップアップのテキストファイルを必ずインクルードしてください。このあたりの事情については、HTML
Help CenterのTips
and Tricks(英語)で詳しく解説されています。(2000/3/3追記)
ウインドウレベルの状況依存ヘルプ
1.ALIASを設定する
(HTMLHelp
API information)をクリックします。
[HTMLHelp API information]ダイアログが表示されます。
- [Alias]タブの[Add]ボタンをクリックします。
[Alias]ダイアログが表示されます。
- トピックIDを入力し、コンボボックスから対応させるトピックファイル名を選択して[OK]ボタンをクリックします。
- [Alias strings to HTML files]リストに「IDH_CLOSE=topic1.htm」のように、指定したトピックIDとトピックファイル名が表示されます。
- 手順2〜4の操作を繰り返し、すべてのトピックファイルに対してトピックIDを指定します。
- [OK]ボタンをクリックします。
[Project]タブの[ALIAS]に設定内容が表示されます。
[ALIAS]
IDH_CUT=cut.htm
IDH_COPY=copy.htm
IDH_PASTE=paste.htm
- ダイアログで設定せずに、プロジェクトファイルをテキストエディタで直接開いて[ALIAS]セクションを追加することもできます。
- トピックの指定した位置を表示するには、
IDH_CUT=cut.htm#sousa1
のように指定します。上記のように指定してコンパイルすると、HHC3015の警告メッセージが表示されますが、これはメッセージの誤りで、ヘルプは正しくコンパイルされ、指定した位置を表示できます。
- 複数のヘルプを結合する場合、サブヘルプを状況依存ヘルプにするには、メインヘルプのプロジェクトファイルの[ALIAS]セクションで、サブヘルプのエイリアスも指定する必要があります。以下のようにサブヘルプのchmファイル+「::/」+トピックファイル名を指定してください。
IDH_TEST1=sub.chm::/test/data.htm
また、サブヘルプのマップファイル(*.h)も、メインヘルプのプロジェクトファイル中で指定してください。
なお、Visual C++の場合、上記のように設定しないでも、
IDH_TEST1=test/data.htm
で呼び出せるというお便りをいただきました。VC++関連は情報が少ないので、「IDH_TEST1=test/data.htm」が有効かどうか他に試された方がいらっしゃいましたらご連絡ください。(その後、VC++で「IDH_TEST1=test/data.htm」を試しても駄目だったといお便りもいただきました。う〜ん、どちらでしょう。いずれにせよ、駄目な場合は、「IDH_TEST1=sub.chm::/test/data.htm」をお試しください。)
2.MAPを設定する
C++から呼び出す場合
- C++の場合は、フィールドレベルの状況依存ヘルプと同様のフォーマットでヘッダファイル(*.h)を作成します。
#define IDH_CUT 1000
#define IDH_COPY 1010
#define IDH_PASTE 1020
(HTMLHelp
API information)をクリックし、[Map]タブの[Header file]ボタンをクリックしてヘッダファイルを指定します。
- [OK]ボタンをクリックします。
[Project]タブの[MAP]セクションに設定内容が表示されます。
Visual Basicから呼び出す場合
ヘッダファイルを設定しません。プロジェクトファイルをテキストエディタで開き、次のように直接記述します。
[MAP]
#define IDH_CUT 1000
#define IDH_COPY 1010
#define IDH_PASTE 1020
- VBの場合も、VC++と同様にヘッダファイルを設定してもトピックを呼び出せたというお便りをいただきました。こちらも、ヘッダファイルを使って駄目かどうか情報をいただければ幸いです。(Microsoftのサポート情報では、VBの場合は上記のようにヘッダファイルを使わずに直接指定する方法で説明しています。)
フィールドレベルの状況依存ヘルプのチェック
HTML Help MVPのDavid Liske氏作のHTML Help Popup Testerというフリーウェアでチェックできます。コンテキスト番号を入力すると、対応するポップアップが表示されます。
以下のページからダウンロードできます。
http://www.mvps.org/htmlhelpcenter/hhF1test.htm
ウインドウレベルの状況依存ヘルプのチェック
HTML Help Workshopでコンテキスト番号を入力し、対応するトピックが表示されるかどうかチェックできます。
- コンテキスト番号はコンパイルしたヘルプ(*.chm)に対して行います。ヘルプをコンパイルしてから以下の操作を行ってください。
- [Test]メニューの[HtmlHelp API]を選択します。
[Test HtmlHelp API]ダイアログボックスが表示されます。
- [Browse]ボタンをクリックし、テストするHTML Helpファイル(*.chm)を選択します。
- [Command]コンボボックスで[HH_HELP_CONTEXT]を選択します。
- [Map number]に、表示するトピックのコンテキスト番号を入力します。
- [Test]ボタンをクリックします。
指定したヘルプのウインドウが開き、 コンテキスト番号に対応するトピックが表示されます。
- 他のトピックをテストする場合は、[Map number]を変更した後、[Test]ボタンをクリックしてください。
- [Close]ボタンをクリックするとダイアログボックスが閉じ、テストを終了します。
アプリケーション側の設定について
C++
Visual Basic
Delphi
- 「Delphiマガジン 第6号」(1999年8月16日発売)の「特集2 HTML Helpの作成とDelphiとの連携」に、HTML
Helpの作成方法とDelphiとの連携について記載されています。
Delphiマガジン
http://dmj.psnet.ne.jp/
上記サイトから、記事に関連したサンプルファイル(exe、chm、ソースコード)をダウンロード可能です。状況依存ヘルプに対応するためにHTML Help APIをラッパーしたコンポーネントも収録されおり、これを使うと開発者はHTML
Help呼び出しにかかるコーディングすることなく、状況依存ヘルプを表示できます。
関連情報
「What's This Helpと状況依存ヘルプについて」