ヘルプの目次トピックを表示する
                                                        玄関へお回り下さい。
コモンダイアログコントロールを使って目次トピックを表示    (102)
    Help Workshop(HCW4.0)で作成されたヘルプファイルに対して目次トピックを表示させようとしても、正しく表示されない場合があります。
これはHCW4.0で作成されたヘルプファイルは目次トピックを表示する場合に、コンテンツファイル(*.cnt)を使用するためです。

コモンダイアログコントロールには、WinHelp関数のHELP_FINDERコマンドに対応する定数は準備されていません。従ってヘルプファイルの目次トピックにアクセスするにはHELP_FINDERコマンドを定数として宣言し、これを使用します。


宣言セクションに記入する

'HELP_FINDER コマンドを定数として宣言
Private Const cdlHeloFinder = &HB

Private Sub Command1_Click()
'コモンダイアログコントロールを使って目次トピックを表示
  CommonDialog1.HelpFile = App.Path & "\Postal.hlp"
  CommonDialog1.HelpCommand = cdlHeloFinder
  CommonDialog1.ShowHelp
End Sub


   以上の設定でヘルプファイルの目次トピックの画面が一番最初に表示されます

但し、標準以外のコモンダイアログコントロールを使用する為に配布時等は添付したり、ファイルサイズが大きくなったりと、マイナス面が大きい
コンテキストIDを指定してヘルプファイルを表示     (102)
  
  メニューを作成し、下記コードを記入すると目次トピックが表示する

ヘルプファイルの読込みは表示の前でも可
Private Sub Form_Load()
    App.HelpFile = App.Path & "\Postal.hlp"
End Sub


Private Sub menuMyHelp_Click()
   menuMyHelp.HelpContextID = 0
   SendKeys "{F1}"
End Sub
  上記よりこちらが簡単かも! 
  メニューからはコンテキストIDは表示できない


  ヘルプファイルのコンテキストIDに対応したヘルプを表示する
  クリックした時に表示又はフォーカスがある時にF1キーを押す

Private Sub Command2_Click()
'フォーカスがある時に[F1]でもOK
  App.HelpFile = App.Path & "\Postal.hlp"
  Command2.HelpContextID = 3  '0 だと目次が表示
  SendKeys "{F1}"
End Sub


APIを使ったヘルプファイルの表示           (102)
   フォームの宣言セクションに記入

Option Explicit   'SampleNo=102 WindowsXP VB6.0(SP5) 2002.05.19
'WINHELP.EXEを実行する(P244)
Private Declare Function WinHelp Lib "user32" Alias "WinHelpA" _
    (ByVal hwnd As Long, ByVal lpHelpFile As String, _
     ByVal wCommand As Long, ByVal dwData As Long) As Long
'ヘルプファイルを閉じる定数
Private Const HELP_QUIT = &H2&
'ヘルプの索引画面を表示する定数
Private Const HELP_FINDER = &HB&
'キーワードに一致したヘルプを表示する定数
Private Const HELP_KEY = &H101


Private Sub Form_Load()
    App.HelpFile = App.Path & "\Postal.hlp"
End Sub


Private Sub
Command3_Click()
'APIを使って目次トピックを表示する
  Dim ret As Long
  ret = WinHelp(Me.hwnd, App.HelpFile, HELP_FINDER, ByVal 0&)
End Sub


Private Sub Form_Unload(Cancel As Integer)
'終了時ヘルプファイルも閉じる
  Dim ret As Long
  ret = WinHelp(Me.hwnd, App.HelpFile, HELP_QUIT, ByVal 0&)
End Sub


どちらの場合も目次トピックを表示する場合に、コンテンツファイル(*.cnt)が必要です。又ヘルプファイルを表示すると *.GID ファイルが作成されます。

ヘルプファイルを作成するには Microsoft Word やヘルプ作成用のオンラインソフト(ここのリンクの日経ソフトウェアのヘルプ作成支援のための主なオンライン・ソフト参照)等を使ってテキストを作成し、VB付属の Microsoft Help Workshop等でコンパイルします。

今回APIを使ったやり方をUPしました。
1番目の方法はコモンダイアログコントロールを使いますので使用時は添付が必要になってくるし、2番目の方法はSendKeys を使いますので、機種によってはうまく動作しない場合があるようですし、従ってAPIを使った方法を試してみました。ただ、プログラム起動フォルダーにヘルプファイルも置いておかないと、検索タブが表示されません。(これで一晩徹夜しました。)


ちなみに、私は ヘルプカード99/mono/梅木泰宏氏 カード型データベースを作成する感覚で操作できる    http://www2b.biglobe.ne.jp/~mono/  を使っています。




2002/05/20