C++Builder 2010 でHTMLヘルプを使用する
既に情報は出ているけど、個人的なニーズがあってまとめてみた。
1. アプリケーションがHTML Helpを表示するようにする。
適当なソースコード(WinMainがあるコードかメインフォームのコードが一番無難かも)に以下の2行を追加。#include <HtmlHelpViewer.hpp> #pragma link "HTMLHelpViewer"これがないとWinHelpが呼び出されてしまうので注意。
2. メインフォームのOnCreateでヘルプファイルを指定する。
void __fastcall TfrmMain::FormCreate(TObject *Sender) { Application->HelpFile = ChangeFileExt(Application->ExeName, _T(".chm")); // ヘルプファイルの指定 Application->OnHelp = FormHelp; // ヘルプを表示するイベントハンドラ(状況依存ヘルプの場合は不要) }ヘルプファイルは[プロジェクト|オプション|アプリケーション|ヘルプファイル]で指定してもいいけど、フルパス指定になってしまうのでアプリ側で動的に指定するのがおすすめ。 状況依存ヘルプを使用しないで常に目次のみを表示する場合や、ヘルプとしてHTMLファイルなどを使用する場合はApplication->OnHelpにヘルプの目次のみを表示するイベントハンドラを設定する。
3. ヘルプを表示するイベントハンドラを記述する
状況依存ヘルプを使用しない場合は、メインフォームにOnHelpイベントを定義してヘルプファイルを表示する処理を記述。bool __fastcall TfrmMain::FormHelp(WORD Command, int Data, bool &CallHelp) { Application->HelpShowTableOfContents(); // HTMLヘルプの目次を表示 CallHelp = false; // システム側で何もする必要が無いのでfalseにする。 return true; // 普通に成功するはずだからtrueを返す。 }また、各フォームのHelpContextの値を0以外にし、HelpTypeの値をhtContextにする。
HTMLヘルプ以外でも、Application->HelpFileを設定すれば、Application->HelpShowTableOfContentsでよろしくやってくれる。(HTMLファイルで確認。)