IconViewerのプログラム企画は次のようにしました。
・アイコン(カーソル)ファイルからアイコン(カーソル)の画像とともに、その基本情報も表示する。
・(EZImage等他のダイアログ、更にDLL化して使えるように、モーダル)ダイアログベースのアプリとする。
・スタンドアロンの場合、単に表示だけだとつまらないのでビットマップの選択、登録をしてアイコン化できるようにする。
・スタンドアロンの場合、ユーザーインターフェースを充実させる。
この結果、(既に20年前のソースコードは失っていたので、WEBでActiveBasic用に書いたスタンドアロンプログラムをDLして、参考とし)、次のような具体仕様を想定しました。
・昔のIconViewerのデザインを極力生かす。即ち、ダイアログ上にアイコン、ANDビットマップ、XORビットマップを表示させ、主要データはリストビューで表示(且つ選択でき)、詳細情報はエディットボックスでじっくり見れるようにする。
・BCCFormでメインダイアログ、保存用ダイアログ、Hotspot設定用ダイアログ、および関連イメージリソースを作成してダイアログベースのアプリとする。
・アイコンファイルの管理用にCICONクラスを作ろうと思いますが、その中で構成ビットマップをリスト管理しようと思います。
・インターフェースとして、メインダイアログにはメニュー、ツールバーとステータスバーを付け、ショートカットキー(アクセラレーター)を付け、ドラッグアンドドロップにも対応させる。
以上の内容を元に先ずはリソースを開発します。(以下は"IconViewer.rc"と"ResIconViewer.h"を参照して読んでください。)
・メインダイアログ(IDD_ICON)、保存用ダイアログ(IDD_SAVE)、Hotspot設定用ダイアログ(IDD_HOTSPOT)およびバージョン表示用ダイアログ (IDD_VERSION)を作ります。
・メニュー(「ダイアログで使用するメニュー」IDM_FORM_MENU)を、基本テンプレートを改造して作ります。
・ツールバー用のビットマップ(IDI_TBAR)をTBEditorで、およびプログラムアイコン(IDI_ICON)をEZImageで作ります。
・最後にアクセラレーター(IDA_ACCEL)を作成します。(これはBCCFormでは、実際にショートカットキーを押してキー設定を行うインターフェースを取っています。勿論選択による設定もできます。)
なお、プログラムにはツールバーとステータスバーにツールチップを付けていますが、これが新しめのスタイルなので、
#define TBSTYLE_TOOLTIPS 0x0100
#define SBT_TOOLTIPS 0x0800
というスタイル定数用のリソースコンパイル用定義を追加しています。
これで出来上がった"IconViewer.rc"と"ResIconViewer.h"をエディターで美しく仕上げてから、SkeltonWizardにかけます。
IDD_ICONをベースとするダイアログベースのプログラムを選択し、ツールバー(IDI_TOOLBARのビットマップとメニューをシンクロさせます)、ステータスバー(文字列区分は2つ)、ウィンドウメッセージ割り込みはWM_NOTIFYとWM_DESTROY(注)を選択します。
注:BCCSkeltonのモードレスダイアログ用コールバック関数マクロにWM_INITDIALOG、WM_NOTIFYとWM_CLOSEが既定で組み込み済です。
これで自動的にIconViewer.h、IconViewerProc.h、IconViewer.cppが出来上がります。
今日はここまでにしましょう。