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が出来上がります。

 

今日はここまでにしましょう。