Views Foundation > ActiveX コントロールをグラフィック・オブジェクトとして Rogue Wave Views アプリケーションに追加する > 例を使った Rogue Wave Views アプリケーションの説明 > 手順 1:IlvGraphicCOMAdapter オブジェクトの作成
 
手順 1:IlvGraphicCOMAdapter オブジェクトの作成
この手順では、IlvGraphicCOMAdapter オブジェクトを作成します。このグラフィック・オブジェクトは ATL コントロールのホスト API を使用するため、オブジェクトの識別子を次の 3 つの方法で指定できます。オブジェクトの作成を、次から指定できます。
*CLSID - デフォルト
*ProgID - SECOND_VERSION として定義
*URL - THIRD_VERSION として定義
デフォルトを使用しない場合は、上記の定義後にファイル specific.cpp を再コンパイルするだけで、テストできます。
この例では、Microsoft Calendar コントロールを使用します。コンピューターで Calendar コントロールが使用できない場合は、DefaultIdentifier の値を変更します。
オブジェクトの作成は非常に簡単です。
IlvGraphic* obj = new IlvGraphicCOMAdapter(size, identifier, getDisplay());
ここで:
*size は、オブジェクトのサイズです。
*identifier は、上で説明したコントロールの識別子です。識別子に付加できる値の例を次に示します。
CLSID:"{8E27C92B-1264-101C-8A2F-040224009C02}"
ProgID:"MSCAL.Calendar"
URL: "http://www.ibm.com"
クラス IlvGraphicAdapter の定義を取得して、ライブラリー Ilvcomstat.lib または ilvcomdyn.lib に追加するため、次のヘッダー・ファイルをインクルードする必要もあります。
#include <ilviews/windows/comgadap.h>
また、共通 ActiveX ダイアログの使用を可能にするため、oledlg.h ファイルをインクルードする必要もあります。
次のコードが、MakeNodeInteractor クラスの doIt メンバー関数で呼び出されます。
void
MakeNodeInteractor::doIt(IlvRect& size)
{
// the manager should actually be a grapher.
IlvGrapher* grapher = ILVDYNAMICCAST(IlvGrapher*, manager());
if (!grapher)
return;
// Creates the new IlvGraphicCOMAdapter object.
const char* identifier = DefaultIdentifier;
IlvGraphic* obj = new IlvGraphicCOMAdapter(size, identifier, getDisplay());
// Deselects the previous object(s) if any.
grapher->deSelect();
// Adds the new object as a node into the grapher.
grapher->addNode(obj, IlvTrue, grapher->getInsertionLayer());
// Selects it.
grapher->makeSelected(obj);
// Deals with the commands if needed.
if (grapher->isUndoEnabled())
grapher->addCommand(new IlvAddNodeCommand(grapher,
obj,
グラファ
->getInsertionLayer()));
}
このクラスを使用可能にするには、次に示すヘッダー•ファイルをインクルードしなければなりません。
*MakeNodeInteractor のメンバー関数 doIt で使用されるクラス IlvAddNodeCommand の定義を含む ilviews/grapher/commands.h。詳細については、マネージャー のセクションを参照してください。
*クラス MakeNodeInteractor の定義を含む makenode.h
MakeNodeInteractor クラスの定義は次のようになります。
class MakeNodeInteractor :public IlvMakeRectangleInteractor
{
public:
MakeNodeInteractor(IlvManager* manager, IlvView* view)
: IlvMakeRectangleInteractor(manager, view)
{
}
MakeNodeInteractor() :IlvMakeRectangleInteractor() {}
 
void doIt(IlvRect&);
};

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