|
HTMLHelpの呼び出し方 |
|
Windows3.1から使用されている軽いWinHelp(*.hlp)に対し、Windows95+IE4以上の環境で
使用可能なHTMLHelp(*.chm)があります。DelphiではWinHelpをApplication.HelpCommandで
呼び出すことができますが、HTMLHelpを呼び出すコードが実装されていません。
ここでは、HTMLHelpをDelphiで呼び出す方法に関して説明します。 Delphiでは、HTMLHelpを呼び出すWindowsAPIを使います。このAPIはhhctrl.ocxに
HtmlHelpAという関数で実装されています。そのため、HTMLHelpを呼び出すには、
DLLを使用する場合と同じことを行います。 具体的には下のようになります。これは、Formにボタンが1つ配置されていて、 そのボタンを押すとヘルプファイル(help.chm)が表示されるアプリケーションです。 hhctrl.ocxを静的にリンクしています。
上の例では、HtmlHelpA APIを使うためにhhctrl.ocxを静的にリンクしています。 静的リンクでは、アプリケーション起動時にhhctrl.ocxをリンクすることになります。 無事にリンクされた後は、HtmlHelpA関数をDelphiで定義された関数 として使用することができます。 HtmlHelpA関数は、第一引数(hwndCaller)にアプリケーション※のハンドルを、 第二引数(pszFile)にヘルプファイル文字列のポインタ(PChar)を渡します。 第三引数(uCommand)はヘルプのアクションを整数で指定します (アクションはこちらを参照)。 第四引数(dwData)にはマップファイルの整数や、キーワードをPCharとDWORDでキャストした整数が入ります。 ※これまではHtmlHelp関数に渡すハンドルを単にHandleと記述していたため、アプリケーションのではなくウィンドウ(=フォーム)のハンドルを渡す可能性がありました。ウィンドウのハンドルを渡すと、ヘルプを表示した後にウィンドウをクリックしても最前面に出てこなくなります。 上の例では静的にリンクしました。万が一、アプリケーション起動時にhhctrl.ocxが 見つからない場合、起動できなくなります。それを避けるには動的にリンクします。 具体的なコードは下のようになります。
上の例では、Button1をクリックした際にhhctrl.ocxを動的にリンクするようにしています。 もし、Button1Click以外の関数でもHtmlHelp関数を使う場合は、OnCreateイベント中で hhctrl.ocxをリンクすると良いと思います。 |
”意味”に記述がない場合は、MSDN Libraryを 参考にしてください。(大本はてくにっく。さんのページから ヒントを得ています)
| アクション定数 | 対応する整数 | 意味 |
|---|---|---|
| HH_DISPLAY_TOPIC | 0 | dwDataに、トピックをDWORD(PChar('TopicFileName'))で渡すとトピックを表示 |
| HH_HELP_FINDER | 0 | 上と一緒。WinHelpとの互換性のためにある |
| HH_DISPLAY_TOC | 1 | 目次を表示 |
| HH_DISPLAY_INDEX | 2 | Index.hhkファイルに指定したキーワードを表示してHLTM Helpを起動 |
| HH_DISPLAY_SEARCH | 3 | 検索タブを表示します。但し、先にHTML Helpを起動しておく必要があります。dwDataにはHH_FTS_QUERY構造体のポインタを渡します |
| HH_SET_WIN_TYPE | 4 | |
| HH_GET_WIN_TYPE | 5 | |
| HH_GET_WIN_HANDLE | 6 | |
| HH_ENUM_INFO_TYPE | 7 | |
| HH_SET_INFO_TYPE | 8 | |
| HH_SYNC | 9 | |
| HH_RESERVED1 | 10 | |
| HH_RESERVED2 | 11 | |
| HH_RESERVED3 | 12 | |
| HH_KEYWORD_LOOKUP | 13 | |
| HH_DISPLAY_TEXT_POPUP | 14 | |
| HH_HELP_CONTEXT | 15 | マッピングされたIDをdwDataに指定し、そのトピックを表示します |
| HH_TP_HELP_CONTEXTMENU | 16 | |
| HH_TP_HELP_WM_HELP | 17 | |
| HH_CLOSE_ALL | 18 | ヘルプを閉じます。このアクションでは、hwndCallerとdwDataに0を、pszFileにnilを代入します |
| HH_ALINK_LOOKUP | 19 | |
| HH_GET_LAST_ERROR | 20 | |
| HH_ENUM_CATEGORY | 21 | |
| HH_ENUM_CATEGORY_IT | 22 | |
| HH_RESET_IT_FILTER | 23 | |
| HH_SET_INCLUSIVE_FILTER | 24 | |
| HH_SET_EXCLUSIVE_FILTER | 25 | |
| HH_INITIALIZE | 28 | |
| HH_UNINITIALIZE | 29 | |
| HH_PRETRANSLATEMESSAGE | 253 | |
| HH_SET_GLOBAL_PROPERTY | 252 |