自作のヘルプを呼び出す方法

[戻る]
potu 2002/09/13(金) 13:50:01
potuです。いつもお世話になっております。

※下記に出てくる「xxx」は、exeの名前です。

・目的
自分で作成したヘルプファイルを、メニューの「ヘルプ」-「xxxのヘルプ」を押したときに表
示させたいと思います。


・現在出来ているところ
ヘルプファイルは作成済みです。

・出来ていないところ
メニューから「ヘルプ」-「xxxのヘルプ」を押したときに自作のヘルプを表示させる部分で
す。

・ヘルプファイルの作成方法
ヘルプファイルは、「HelpCard」というソフトを使用して作成したものです。
「Help Workshop」と同じようにヘルプを作ることが出来るものです。
(ヘルプのコンパイラは「Help Workshop」を使用しているようです)
作成された「xxx.hlp」をヘルプとして使用したいと思います。


・行ってみたこと
過去ログの
「http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?
print+200109/01090085.txt」を見て、

1.exeのファイル名とhlpのファイル名(例:123.exeと123.hlp)を同じにして同じフォルダに
入れる。
2.メニューのヘルプがクリックされたときのソースに
    AfxGetApp()->WinHelp(0);
 を記述。

結果・・・「このトピックは存在しません。アプリケーションの製造元に問い合わせて、新しい
ヘルプファイルを入手してください」というメッセージボックスが表示されました。

・教えていただきたいこと
メニューから「ヘルプ」-「xxxのヘルプ」を押したときに自作のヘルプを表示させる方法で
す。

環境は、Win2000, VC6.0, コンソールアプリで作成しています。

ご教授をお願いいたします。

potu 2002/09/13(金) 13:52:59
potuです。

すみません 環境が違っていました。

「コンソールアプリ」ではなく、「MFC使用」です。

さえずり [E-Mail] 2002/09/13(金) 14:49:05
 MFCを使用でしたら・・・・
 CWinApp::m_pszHelpFilePathにヘルプファイルのフルパス
が記述さています。これを変更する事でお望みの動作をするかと。

BOOL CXXXApp::InitInstance() {

     :

 free((void*)m_pszHelpFilePath) ;
 m_pszHelpFilePath = _tcsdup( 自作したヘルプファイルのフルパス ) ;
}

potu 2002/09/13(金) 15:17:14
さえずりさん レスありがとうございます。

教えていただいた方法でやってみましたが、同じエラーメッセージが表示されました。
(「このトピックは存在しません。アプリケーションの製造元に問い合わせて、新しい
ヘルプファイルを入手してください」)

そこで、フルパスを1階層上に変更して実行してみました。
(「AAA\BBB.HLP」を「AAA」という風に)

実行すると、ヘルプが無いので(あたりまえですが)、「自分で探しますか?」という
メッセージボックスが出てきたので、「はい」で自作のヘルプファイルを指定しました。

そうすると、エラーメッセージが表示されました。

ヘルプファイルのみを普通に実行すると、何のエラーも無く表示されます。


何が原因でしょうか・・・。(?_?)

ku 2002/09/13(金) 15:56:22
引数の0ですが、ヘルプを作成したときにトピックを指定しませんでしたか?
そのときに値を直接していしているならその値
ヘルプツールによっては、なんらかのdefineを定義したヘッダファイルを
作ってくれている可能性もあります
で、0というのは例であって、自分が作ったヘルプのトピック番号に0
が無ければ、そのようなエラーが出る可能性があると思います

WinHelp(0, HELP_FINDER);
などとやってエラーがでないようでしたら
WinHelp(0)で指定した0番のトピックが無いと断定してよいでしょう
(WinHelp(0)とWinHelp(0, HELP_CONTEXT)は同じです)

トピックを指定して起動したいのなら
ヘルプを作成したときに指定した番号なり、ヘルプツールが作成してくれた
define値なりを使ってみてください
トピック検索ダイアログを最初に出したいのなら
WinHelp(0, HELP_FINDER);
で良かったと思います

potu 2002/09/13(金) 16:03:44
kuさん レスありがとうございます。

>WinHelp(0, HELP_FINDER);
>などとやってエラーがでないようでしたら
>WinHelp(0)で指定した0番のトピックが無いと断定してよいでしょう

kuさんのおっしゃる通りでした。

「WinHelp(0, HELP_FINDER);」に変更したら、正常に動きました。

ありがとうございました。m(__)m

potu 2002/09/13(金) 16:04:29
[[解決]]
potuです。

すみません 解決マーク忘れてました。

古いスレッドには追加発言できません。