Views Foundation > 既存の Rogue Wave Views コードから ActiveX コントロールを作成する > ATL ライブラリーで ActiveX コントロールを作成する > 手順 1:プログラムの準備
 
手順 1:プログラムの準備
このチュートリアルの出発点として使用するサンプル・アプリケーションを準備する手順です。サンプルは最後に ActiveX コントロールに変換して、他のアプリケーション内で使用できます。この手順で必要な作業は基本的に、データをコードから分離して、トップ・ビュー (元のプログラムの場合) または親ウィンドウの一部となる子ビューとして、メインビューを作成できるようにすることです。
また、これらの変更によって、新しい機能を ActiveX コントロールに追加するのが簡単になります。変更されたファイルが、step1 ディレクトリーにあります。
次の処理を行います。
*コードからデータを分離して、.ilv ファイルに配置する
*Ctrl クラスの初期化コードをカプセル化する。
*リソース・ファイル (.rc) を ilv2data で作成する
*manager.cpp ファイルの変更
コードからデータを分離して、.ilv ファイルに配置する
.ilv ファイルに格納されたデータは、.cpp ファイルに格納された文字列としてのデータよりも変更しやすくなります。また、あらゆる依存性の問題が、Rogue Wave Views データ・ファイル・パッケージ化ツールの ilv2data によって解決できます。
結果は、step1\data\ctrl.ilv ファイルにあります。
アタッチメントを追加したため、メイン・ビューを一貫した方法でリサイズできます。また、オブジェクトに名前を付けたので、プログラムからより容易にアクセスできます。これらの機能強化はすべて、Rogue Wave Views Studio で行われました。
メモ: コードからのデータ分離は、このチュートリアルで不可欠というわけではありませんが、変更を容易にするためにお勧めします。
Ctrl クラスの初期化コードをカプセル化する。
初期化コードは、ActiveX コントロールの作成と対話に使用する Ctrl クラスにカプセル化されています。
このクラスは、step1\ctrl.h ファイルで宣言し、step1\ctrl.cpp ファイルで定義します。この cpp ファイルには、コールバック関数も格納します。
Ctrl が基本クラスです。IlvGadgetContainer から派生します。3 つのコンストラクターと 4 つのメンバー関数だけで構成され、そのうち 1 つはプライベートです。
*最初のコンストラクターは、Ctrl オブジェクトをファイルの元のバージョンと同様にトップ・ビューとして作成します。step1\manager.cpp の main 関数で使用され、次の署名があります。
Ctrl(IlvDisplay* display, const IlvRect& size, const char* filename = 0)
*2 番目のコンストラクターは、Ctrl オブジェクトを子ビューとして作成します。次の署名があります。
Ctrl(IlvDisplay* display,
IlvSystemView parent,
const IlvRect& size,
const char* filename = 0)
*3 番目のコンストラクターは、Ctrl オブジェクトを既存のシステム・ビューで作成します。これは、ActiveX コントロールの作成に使用されます。次の署名があります。
Ctrl(IlvDisplay* display, IlvSystemView parent, const char* filename = 0)
*パブリック・メンバー関数 getManagerRectanglegetManagerViewgetManager は、コントロールにロードされる各オブジェクトへのアクセスを提供します。.プライベート・メンバー関数 init はコントロールを初期化するために呼び出されます。つまり、データ・ファイルを読み込んだり、コールバックをオブジェクトに関連付けたりします。メンバー関数 PopupManager 内にあったコードのほとんどが、このクラスに移動しています。
リソース・ファイル (.rc) を ilv2data で作成する
ilv2dataを使って、ファイル step1\data\ctrl.ilv および step1\data\browse.ilv が含まれる .rc ファイルを作成します。このリソース・ファイルをサンプル・プログラムで使うこともできますが、このチュートリアルでは後で ActiveX コントロールを構築するために使用します。
ilv2data の詳細は、Rogue Wave Views アプリケーションのパッケージ化を参照してください。
manager.cpp ファイルの変更
ファイル step1\manager.cpp には、IlvDisplay のインスタンスと、新しい Ctrl クラスのインスタンスを作成する main 関数だけが含まれます。
int
main(int argc, char* argv[])
{
IlvDisplay* display = new IlvDisplay("IlvDemo", "", argc, argv);
if (!display || display->isBad()) {
if (display)
delete display;
IlvFatalError("Couldn't create display");
return 1;
}
Ctrl* ctrl = new Ctrl(display, IlvRect(0, 0, 400, 400));
IlvMainLoop();
return 0;
}

Version 6.0
Copyright © 2015, Rogue Wave Software, Inc. All Rights Reserved.