WinHelpの呼び出し方 |
Delphi2005以上では、HTMLHelpがデフォルトになっています。そのため、 WinHelpを呼び出すには、USES節にWinHelpViewerを追加する必要があります。但し、 Forms.pasにバグがあるため、始めにそれを修正しなくてはなりません。ここではその手順を 示します。
上の例では、HtmlHelpA APIを使うためにhhctrl.ocxを静的にリンクしています。 静的リンクでは、アプリケーション起動時にhhctrl.ocxをリンクすることになります。 無事にリンクされた後は、HtmlHelpA関数をDelphiで定義された関数 として使用することができます。 HtmlHelpA関数は、第一引数(hwndCaller)にウィンドウのハンドルを、 第二引数(pszFile)にヘルプファイル文字列のポインタ(PChar)を渡します。 第三引数(uCommand)はヘルプのアクションを整数で指定します (アクションはこちらを参照)。 第四引数(dwData)にはマップファイルの整数や、キーワードをPCharとDWORDでキャストした整数が入ります。 上の例では静的にリンクしました。万が一、アプリケーション起動時に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 |