手順 3:オブジェクト・インタラクターの追加
この手順では、オブジェクト・インタラクター
IlvGraphicComAdapterInteractor の使用法を示します (このクラスは、ヘッダー•ファイル
ilviews/windows/comgint.h で定義されます)。たとえグラフィック・オブジェクトへの変換時でも、これによってコントロールと (いくらか制約があるにせよ) 対話できます。実際の作業は、
IlvGraphicComAdapterInteractor のインスタンスを、 関数
AttachInteractorAccelerator によって実行される
IlvGraphicCOMAdapter オブジェクトに付加するだけです。
void
AttachInteractorAccelerator(IlvManager* man,
IlvView*,
IlvEvent& ev,
IlvAny arg)
{
// The arg parameter is actually an object interactor.
IlvManagerObjectInteractor* inter =
ILVREINTERPRETCAST(IlvObjectInteractor*, arg);
// Gets the object above which is the mouse pointer.
IlvGraphic* graphic = man->lastContains(IlvPoint(ev.x(), ev.y()));
// Any object?
if (graphic) {
// Is it an IlvGraphicCOMAdapter?
IlvGraphicCOMAdapter* adapt=
ILVDYNAMICCAST(IlvGraphicCOMAdapter*, graphic);
if (adapt) {
// Attaches the interactor to the object.
adapt->setInteractor(inter);
}
}
}
IlvGraphicComAdapterInteractor オブジェクトは、関数のパラメーターとして与えられ、関数
ActiveXGraphicAdapter::specificInitialization に割り当てられています。
_objectInteractor = new IlvGraphicComAdapterInteractor;
// Adds an accelerator in order to attach an object interactor to the
// control under the mouse pointer.
grapher->addAccelerator(AttachInteractorAccelerator,
IlvKeyUp,
IlvCtrlChar('b'),
0,
_objectInteractor);
Version 6.0
Copyright © 2015, Rogue Wave Software, Inc. All Rights Reserved.