HTML Help の作成で困ったこと

今更ですが、HTML ヘルプ *.chm を作ってみました。HTML ファイルさえ書ければ簡単なんですね(^^;

実際に作ったのは、C/C++ のあんちょこ。元々のオリジナルは、『C++ Reference』の日本語訳『C/C++ リファレンス』にある Windows HTML HELP。すべてのキーワードや関数が網羅されているわけでは無いけど、他の言語とごっちゃになって正しい綴りを忘れたり、引数の順序を忘れた時に便利。ただし、ヘルプのキーワードには何も登録されていない。

そこで秀丸エディタの外部ヘルプとして使った時に、「カーソル位置の単語を取り込んで該当ページを開く」ということが出来ない。そこで、内容は全く変更しないで、キーワードを追加。cppreferenceR.chm としておいておく。

秀丸エディタのマクロ・ヘルプで「return」を選んだ場合

ただここで、一つ解らないことがあります。それは一つのキーワードに複数のトッピックをつける方法です。厳密には、複数のトピックは付けられるのですが、タイトル (右図参照) の付け方が解りません。なおコンパイルに使ったのは、『HTML Help Workshop』です。

  • 勝手に元のソースの「<title>タイトル</title>」に置き換わってしまう
  • 参照先がファイルだけでなく、「<a name="NAMEID">ページの特定場所</a>」といった場合、タイトルがキーワードになってしまう。結果として、出来上がった HTML ヘルプで選択した時、タイトルに同じ文字列が並んで全く区別が付かない

この辺り、仕様なんでしょうか? 私の使い方が悪いのでしょうか? (name をつけた場所は指定してはいけない???)

2009/04/01

ヘルプをプログラムから開く時のために、トピックを追加します。この時プロジェクト・ファイルに

[ALIAS] IDH_TOP=index.htm IDH_COMMON=index.htm#COMMON IDH_ENCODE=index.htm#ENCODE IDH_SUGGEST=index.htm#SUGGEST IDH_TYPE=index.htm#TYPE

といった要領で指定をしますが、この時 name 属性の存在しない場所へと飛ぶ (上記の例ではセクション・トップの)

IDH_TOP=index.htm

が無いと、HtmlHelp( hWnd, lphelp, HH_HELP_CONTEXT, ID ) 関数が失敗してしまうようです。これって仕様なんでしょうか? それとも、# 付きは、

HHC3015: Warning: An alias has been created to "index.htm#SUGGEST" but the file does not exist

と警告が出るので、元々指定できないのでしょうか? 私が参考にしているサイトでは、

このエラーは、[ALIAS]セクションで、「IDH_TEST1=test1.htm#01」のように、トピックの指定した位置にジャンプさせようとした場合にも発生します。しかしこれは単なるメッセージの誤りで、ヘルプは正しくコンパイルされ、プログラムから状況依存ヘルプを呼び出すと、アンカーの位置が表示されます。

ということで、問題ないようですが....。