ぎん's ほ〜むページ☆   [サイトマップ]

更新日時:2001年11月19日 04:57

HOME 更新履歴 アニメーション ソフトウェア 掲示板 リンク プロフィール
[ ] [ Visual C++ で HTML Help を簡単に実現する方法 ] [ MFCでワーカースレッドを作成する一例 ]

Visual C++ で HTML Help を簡単に実現する方法

ここでは、MFCアプリケーションに、状況依存ヘルプも視野に入れた HTML Help 実装方法を紹介します。この実装方法は、私の作品 AniLaPaint でも使用しております。

MFCには、もともと WinHelp 用の状況依存ヘルプのためのさまざまな処理が含まれております。ここで紹介する方法は、それらの機能を生かしたまま、MFCのメインウィンドウにあたるクラスの仮想関数(WinHelp())をオーバーライドすることで HTML Help 対応を実現しています。そのため、MFC アプリケーションでは、わずかなコードで HTML Help 対応にできます。(この方法については、下記のアーカイブ中で記述しています。)

しかし、アプリケーション自体が HTML Help対応になっても、実際に表示するヘルプそのものを作らないことには、HTML Help 対応のアプリケーションにはなりません。「状況依存ヘルプ」に対応したヘルプを作るには、例えば、アプリケーション実行中のさまざまな場面で登場するダイアログの[ヘルプ]ボタンと、それを押した時に表示されるヘルプ中のページの関係をどこかで設定しておく必要があります。大規模なソフトになればなるほど、その関係を管理するのが至難の技となってきます。

例えば、検索ダイアログを表示するソフトがあったとしましょう。その検索ダイアログには機能を説明する[ヘルプ]ボタンがあります。ユーザがこのヘルプボタンを押した場合、即座に、検索ダイアログの説明を表示します。ちょうどこの説明が載っているページが10ページ目だとします。その場合、検索ダイアログの[ヘルプ]ボタンが押された時、「10ページ目を表示せよ」とプログラム中から命令する必要が出てきます。このような、無意味な番号による呼び出し方法では、ダイアログが沢山ある場合、ページ番号の把握だけでも、とても煩雑な作業となってしまいます。

プログラム中ではもともとダイアログ自体をID名と呼ばれる文字列(識別子)で管理しています。その文字列をそのまま説明のページにも割り振ってしまえると、無意味なページ番号を管理する手間が省けます。また、プログラム中からの呼び出しも、ページ番号の決め打ちによるコードでの説明の表示と異なり、ダイアログ自体の ID名での呼び出しとなるので、ダイアログ毎にヘルプ呼び出しのプログラムを自分で書く必要は無く、また、MFCはもともとID名でのヘルプのページ呼び出しをサポートしています。

分かりやすく言うと、検索ダイアログを表す文字列(識別子)がプログラム中で IDD_FIND であったとします。そのダイアログ上で[ヘルプ]ボタンを押すと、勝手に IDD_FIND を設定しておいた説明のページを検索表示してくれるのであれば、それが最も分かりやすいアプローチであると私は言いたいのです。つまり、ヘルプ作成者は、ヘルプのどこかに IDD_FIND を割り振ったページを作っておきさえすれば良いのです。

 

実際に、このようなVCのID名をそのままページに設定することができる HTML Help 作成ソフトはありませんでした。

そこで、以前より HTML Help 作成ソフトを作られていた田村峰幸氏に相談したところ、この夢のような機能の実現に労を惜しまずいそしんでくださいました。そして、VCのリソースIDに対応した HTML Help 作成ソフトは、今でも世界にたった1つしか存在しません。また、LZWライセンスも締結されているシェアウェアなので、プロで使用なさってもライセンス上安心です。ぜひ、 HTML Help for Visual Studio を使うことで、MFCで作られたソフトの HTML Help 化を実現なさってみてください。

・MFC MDI/SDI アプリケーションの HTML Help 実装方法
・MDIアプリケーションに HTML Help を実装したVCのサンプルプロジェクト
・そのアプリケーション用の HTML Help を作成するための、 HTML Help for Visual Studio のサンプルプロジェクト

この3つをアーカイブしたスケルトンをMFCアプリケーション開発者の方は是非ダウンロードしてみてください。

MFC MDI/SDI 用スケルトン HTML Help for MFC 1.0 (LZH圧縮ファイル) 254 KB (261,085 バイト)


HTML Help の有益な情報をお求めの方は、KeiYu HelpLabがお勧めです。

[ ] [ Visual C++ で HTML Help を簡単に実現する方法 ] [ MFCでワーカースレッドを作成する一例 ]

 

お問い合わせはこちら

Copyright (C) 1997-2001,K.Onogi  無断転載禁止