HTML Helpの作成方法(応用編)
複数のヘルプを結合する

複数のHTML HELP(*.chm)を結合できます。chmファイルをまとめてコンパイルするというのではなく、別々のchmファイルのままで、表示するときに結合します。

  • Web形式の場合はヘルプを結合できません。

たとえばa.chmとb.chmという2つのchmファイルがあり、これらが結合されるように設定しておいたとします。ハードディスクにa.chmのみが入っていると、aの目次とキーワードだけが表示され、b.chmを追加すると、a+bの目次とキーワードが表示されます。また、全文検索もaとbの両方のトピックに対して行なわれます。2つだけでなく、a+b+cと、いくつでもヘルプを結合できます。
このページの最後にサンプルデータを掲載していますので、ご覧ください。

ヘルプの結合は大容量のヘルプや、複数のアプリケーションからなるシステムのヘルプの場合などに有効です。

ここではメインヘルプa.chmにサブヘルプb.chmを結合する場合を例に、結合方法を説明します。

メインヘルプ側の設定

メインヘルプa.chmは、以下の手順で作成します。

結合するファイルを指定する

  1. 通常の方法でメインヘルプのプロジェクトファイルを作成し、[Project]タブ の ””(Add/Remove topic files)でメインヘルプ用のトピックファイルを追加します。
  2. [Project]タブの ””(Change project options)をクリックします。
    [Options]ダイアログボックスが表示されます。
  3. [Merge Files]タブの[Add]ボタンをクリックします。
    [Add Merge File]ダイアログボックスが表示されます。
  4. [Browse]ボタンをクリックし、サブヘルプb.chmを指定します。
  5. [OK]ボタンをクリックします。
    [Options]ダイアログボックスに戻ります。
  • 複数のヘルプを結合する場合は、手順3〜5の操作を繰り返し、結合するchmファイルをすべて指定します。
  1. [OK]ボタンをクリックします。
    [Project]タブに[MERGE FILES]セクショ ンが作られ、指定したchmファイル名が表示されます。

結合するヘルプの目次を指定する

  1. [Contents]タブをクリックし、通常の方法でメインヘルプの目次を設定します。
  2. b.chmの目次も表示されるように設定します。
    結合するヘルプの目次ファイルを挿入する位置の上にあたる見出しまたはページをクリックして選択します。
  3. マウスの右ボタンをクリックします。
    ポップアップメニューが表示されます。
  4. [Insert File]を選択します。
    [Include File]ダイアログボックスが表示されます。
  5. 「b.chm::b.hhc」のように、結合するchmファイルとその目次ファイル名をコロン(:)2つで区切って入力します。
  6. [OK]ボタンをクリックします。
    指定したファイルが挿入されます。
  • 手順6の後で「Cannot find the file b.chm::b.hhc..」とい うメッセージが表示されますが、そのまま[はい]ボタンをクリックすると、目次ファ イルが挿入されます。
  1. 手順2〜6の操作を繰り返し、結合するヘルプの目次をすべて指定します。
  2. 必要に応じて目次の位置や階層を調整します。
  3. ”” (Save file)をクリックし、設定内容を目次ファイルに保存します。

HTML Help Workshopのバグのため、目次ファイルを正しく設定していても、コンパイルすると目次の階層がずれて、結合したヘルプがメインヘルプの見出しの中に表示されてしまいます。これは、目次ファイル(*.hhc)の</UL>タグの位置がずれて挿入されるために発生します。目次ファイルをテキストエディタで直接開いて修正してください。
目次ファイルを開くと、次のように記述されています。


<OBJECT type="text/sitemap">
<PARAM name="Name" value="トピックa4">
<PARAM name="Local" value="ahtml\a4.htm">
</OBJECT>
<OBJECT type="text/sitemap">
<PARAM name="Merge" value="b.chm::b.hhc">
</OBJECT>
</UL>
</UL>

<OBJECT type="text/sitemap"><PARAM name="Merge" value="b.chm::b.hhc"></OBJECT>の部分が、挿入したサブヘルプの目次の部分です。この後の</UL></UL>を、以下のようにサブヘルプの目次の上に移動し、目次ファイルを上書き保存してください。

<OBJECT type="text/sitemap">
<PARAM name="Name" value="トピックa4">
<PARAM name="Local" value="ahtml\a4.htm">
</OBJECT>
</UL>
</UL>

<OBJECT type="text/sitemap">
<PARAM name="Merge" value="b.chm::b.hhc">
</OBJECT>

  • 上記のように修正しても、HTML Help Workshopで[Contents]を変更すると、修正前の状態に戻ってしまいます。目次を完成させた後で修正するようにしてください。

その他の設定

[Index]タブで、通常の方法でキーワードを設定します。

[Options]ダイアログの[Compiler]タブで、次のように設定します。

  • [Compile full-text search information]にチェックを付ける(全文検索を行う場合のみ)
  • [Create a binary TOC]のチェックを外す
  • [Create a binary Index]にチェックを付ける

(一覧に戻る)

サブヘルプ側の設定

通常の方法でプロジェクトを作成してトピックを追加し、サブヘルプの目次、索引ファイルを作成します。[Add Merge File]の操作は行いません。

ただし、””(Change project options)の[Options]ダイアログの[Compiler]タブで、次のように設定しておいてください。

  • [Compile full-text search information]にチェックを付ける(全文検索を行う場合のみ)
  • [Create a binary TOC]のチェックを外す
  • [Create a binary Index]にチェックを付ける

(一覧に戻る)

結合したヘルプ間のリンク

キーワードリンクと隠しキーワードリンクは、単独のヘルプの場合と同じ方法で設定すればOKです。しかし、ハイパーリンクの場合は、単独のヘルプの場合とは異なり、次のいずれかの書式で設定する必要があります。

IE 3.02以降で有効な方法

<A href="mk:@MSITStore:chmファイル名::/トピックファイル名">リンクテキスト</A>

例1) <A href="mk:@MSITStore:sample.chm::/data.htm">図形を描くには</A>

例2) data.htmがtestフォルダの中にある場合
<A href="mk:@MSITStore:sample.chm::/test/data.htm">図形を描くには</A>

IE4.0以降でのみ有効な方法

<A href="ms-its:chmファイル名::/トピックファイル名">リンクテキスト</A>

(一覧に戻る)

注意点

  • 結合するchmファイルは、すべて同じフォルダか、Windowsフォルダ中のHelpフォルダの中に入れる必要があります。結合するように設定されていても、別のフォルダに入っているchmファイルは結合されません。

  • 目次のアイコンなどのスタイルの設定は、メインヘルプの設定が有効になり、サブヘルプの設定は無効になります。

  • サブヘルプでウインドウタイプを設定している場合は、メインヘルプでも同じ名前のウインドウタイプを設定します。ウインドウタイプ名は、「$global_」から始まる名前にしておく方が無難です。結合したヘルプで別のchmファイル中のトピックを二次ウインドウに開くような場合、「$global_」から始まる名前にしておかないと、HH_GET_WIN_TYPEエラーが表示される場合があります。(2000/07/07:追記)

  • HTML Help 1.3以降では、メインヘルプに最低1つのキーワードを指定しておかないと、結合したヘルプの[キーワード]タブが空白になります。サブヘルプにキーワードを指定していても表示されません。キーワードは、hhkファイルで指定したものでも、[Compiler information]でトピック中に挿入したものでも、どちらでもかまいません。何か1つメインヘルプにキーワードを追加してください。(HTML Help 1.2xまではメインヘルプにキーワードが指定されていなくても、サブヘルプでキーワードが指定されていれば、[キーワード]タブに表示されていました。)(2000/07/07:追記)

  • 結合したヘルプに対して[検索]タブで全文検索を行うと、すべてのヘルプの全文検索情報を結合したファイル(*.chw)が自動的に作成されます。このファイルは配布しないでもかまいません。もう一度全文検索を行うと、自動的に再作成されます。

  • 複数のヘルプを結合する場合、サブヘルプを状況依存ヘルプにするには、メインヘルプのプロジェクトファイルの[ALIAS]セクションで、サブヘルプのエイリアスも指定する必要があります。以下のようにサブヘルプのchmファイル+「::/」+トピックファイル名を指定してください。

    IDH_TEST1=sub.chm::/test/data.htm

    また、サブヘルプのマップファイル(*.h)も、メインヘルプのプロジェクトファイル中で指定してください。

    なお、Visual C++の場合、上記のように設定しないでも、

    IDH_TEST1=test/data.htm

    で呼び出せるというお便りをいただきました。VC関連は情報が少ないので、「IDH_TEST1=test/data.htm」が有効かどうか他に試された方がいらっしゃいましたらご連絡ください。

  • サブヘルプでカスケーディングスタイルシートファイル(*.css)を使う場合、cssファイルは、そのファイルを参照するトピックファイル(*.html/*.htm)と同じフォルダか、それより下の階層のフォルダに入れてください。トピックファイルより上の階層に置いておくと、サブヘルプ単独の場合はcssを参照できても、結合すると、参照できなくなるようです。

(一覧に戻る)

サンプルデータ

chmファイルと、元のプロジェクトファイル一式を添付しています。ダウンロードしてご覧ください。

結合例のサンプルデータ (ZIP形式、20KB)

(一覧に戻る)