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です。
すみません 環境が違っていました。
「コンソールアプリ」ではなく、「MFC使用」です。
MFCを使用でしたら・・・・
CWinApp::m_pszHelpFilePathにヘルプファイルのフルパス
が記述さています。これを変更する事でお望みの動作をするかと。
BOOL CXXXApp::InitInstance() {
:
free((void*)m_pszHelpFilePath) ;
m_pszHelpFilePath = _tcsdup( 自作したヘルプファイルのフルパス ) ;
}
さえずりさん レスありがとうございます。
教えていただいた方法でやってみましたが、同じエラーメッセージが表示されました。
(「このトピックは存在しません。アプリケーションの製造元に問い合わせて、新しい
ヘルプファイルを入手してください」)
そこで、フルパスを1階層上に変更して実行してみました。
(「AAA\BBB.HLP」を「AAA」という風に)
実行すると、ヘルプが無いので(あたりまえですが)、「自分で探しますか?」という
メッセージボックスが出てきたので、「はい」で自作のヘルプファイルを指定しました。
そうすると、エラーメッセージが表示されました。
ヘルプファイルのみを普通に実行すると、何のエラーも無く表示されます。
何が原因でしょうか・・・。(?_?)
引数の0ですが、ヘルプを作成したときにトピックを指定しませんでしたか?
そのときに値を直接していしているならその値
ヘルプツールによっては、なんらかのdefineを定義したヘッダファイルを
作ってくれている可能性もあります
で、0というのは例であって、自分が作ったヘルプのトピック番号に0
が無ければ、そのようなエラーが出る可能性があると思います
WinHelp(0, HELP_FINDER);
などとやってエラーがでないようでしたら
WinHelp(0)で指定した0番のトピックが無いと断定してよいでしょう
(WinHelp(0)とWinHelp(0, HELP_CONTEXT)は同じです)
トピックを指定して起動したいのなら
ヘルプを作成したときに指定した番号なり、ヘルプツールが作成してくれた
define値なりを使ってみてください
トピック検索ダイアログを最初に出したいのなら
WinHelp(0, HELP_FINDER);
で良かったと思います
kuさん レスありがとうございます。
>WinHelp(0, HELP_FINDER);
>などとやってエラーがでないようでしたら
>WinHelp(0)で指定した0番のトピックが無いと断定してよいでしょう
kuさんのおっしゃる通りでした。
「WinHelp(0, HELP_FINDER);」に変更したら、正常に動きました。
ありがとうございました。m(__)m
potuです。
すみません 解決マーク忘れてました。