![]() ![]() ![]()
|
BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework UNIVERSE 5.0 |

複数のレスポンダで構成されたレスポンダツリーにイベントを配信するクラスです。このクラスの一部の関数は SFYResponder クラスを通して利用され開発者が直接操作することはありません。
通常、SFYApplication クラスがこのクラスのインスタンスを保持し必要なすべての設定や呼び出しを自動的に行いますが、開発者が直接このクラスを利用し別のレスポンダツリー空間を構築することも可能です。
新しいレスポンダツリー空間にイベントを配信するには、このクラスのインスタンスにレスポンダツリーを関連付けておきます。
例 798. 新しいレスポンダツリー空間を構築する
SFYDistributer _distributer; SFZRootSmp _root; SFCError error; // SFYDistributer クラスのインスタンスを初期化 if ((error = _distributer.Initialize()) == SFERR_NO_ERROR) { // レスポンダツリーのルートレスポンダを生成 if ((_root = SFZRoot::NewInstance(&error)) != null) { // ルートレスポンダに SFYDistributer クラスのインスタンスを設定 _root->SetDistributer(&_distributer); // その他の初期化処理 _root->SetRealBound(_root->GetSuitableBound()); _root->SetStateVisible(true); ... } }
| コンストラクタ/デストラクタ |
|---|
|
SFYDistributer( Void ) SFYDistributer クラスのコンストラクタです。
|
|
~SFYDistributer( Void ) SFYDistributer クラスのデストラクタです。
|
| パブリック関数 | |
|---|---|
| Void |
ClearHandler( Void ) すべてのハンドラの登録を解除します。
|
| Void |
ClearTracer( Void ) すべてのトレーサの登録を解除します。
|
| SFCError |
Initialize( Void ) 初期化処理を行います。
|
| SFCError |
RegisterHandler(
SFXEventRangeConstRef range
, SFYHandler::RuleRecConstRef rule
) RegisterHandler( SFXEventRangeConstPtr range , SFYHandler::HandlerSPPConstPtr spp , VoidPtrConstPtr reference , SInt32 length ) RegisterHandler( SFXEventRangeConstPtr range , SFYHandler::RuleRecConstPtr rule , SInt32 length ) RegisterHandler( SFXEventRangeConstRef range , SFYHandler::HandlerSPP spp , VoidPtr reference ) ハンドラを登録します。
|
| SFCError |
RegisterTracer(
SFXEventRangeConstRef range
, SFYTracer::RuleRecConstRef rule
) RegisterTracer( SFXEventRangeConstPtr range , SFYTracer::OrderEnumConstPtr order , SFYTracer::StateEnumConstPtr state , BoolConstPtr overload , SInt32 length ) RegisterTracer( SFXEventRangeConstPtr range , SFYTracer::RuleRecConstPtr rule , SInt32 length ) RegisterTracer( SFXEventRangeConstRef range , SFYTracer::OrderEnum order , SFYTracer::StateEnum state , Bool overload ) トレーサを登録します。
|
| Void |
Terminate( Void ) 終了処理を行います。
|
| Void |
UnregisterHandler(
SFXEventRangeConstRef range
, SFYHandler::RuleRecConstRef rule
) UnregisterHandler( SFXEventRangeConstPtr range , SFYHandler::HandlerSPPConstPtr spp , VoidPtrConstPtr reference , SInt32 length ) UnregisterHandler( SFXEventRangeConstPtr range , SFYHandler::RuleRecConstPtr rule , SInt32 length ) UnregisterHandler( SFXEventRangeConstRef range , SFYHandler::HandlerSPP spp , VoidPtr reference ) ハンドラの登録を解除します。
|
| Void |
UnregisterTracer(
SFXEventRangeConstRef range
) UnregisterTracer( SFXEventRangeConstPtr range , SInt32 length ) トレーサの登録を解除します。
|
[ public, explicit ] SFYDistributer(Void);
[ public ] ~SFYDistributer(Void);
[ public ] Void ClearHandler(Void);
[ public ] Void ClearTracer(Void);
[ public ] SFCError Initialize(Void);
イベントの配信に必要なすべてのリソースを初期化します。
このクラスをレスポンダツリーに関連付ける場合、先にこの関数を呼び出して初期化しておきます。
[ public ] SFCError RegisterHandler( SFXEventRangeConstRef range // イベント範囲 SFYHandler::RuleRecConstRef rule // ハンドラ規則 );
[ public ] SFCError RegisterHandler( SFXEventRangeConstRef range // イベント範囲 SFYHandler::HandlerSPP spp // ハンドラ関数 VoidPtr reference // リファレンス値 );
[ public ] SFCError RegisterHandler( SFXEventRangeConstPtr range // イベント範囲の配列 SFYHandler::RuleRecConstPtr rule // ハンドラ規則の配列 SInt32 length // 配列の要素数 );
[ public ] SFCError RegisterHandler( SFXEventRangeConstPtr range // イベント範囲の配列 SFYHandler::HandlerSPPConstPtr spp // ハンドラ関数の配列 VoidPtrConstPtr reference // リファレンス値の配列 SInt32 length // 配列の要素数 );
ハンドラ規則が適応されるイベントの範囲を表します。
ハンドラ関数とリファレンス値のセットを表します。
イベント範囲やハンドラ規則が同じ条件の要素を複数個登録することができます。この場合、最後に登録された要素が優先的に評価されます。
1つのハンドラを登録する方法
SFYDistributer _distributer; SFCError error; error = _distributer.RegisterHandler(SFXEventRange(SFEVT_KEY, SFEVT_KEY, SFP16_BEGIN, SFP16_END), XANDLER_INTERNAL(OnKey));
複数のハンドラをまとめて登録する方法
static SFXEventRange::AtomRecConst range[] = {
{ SFEVT_KEY, SFEVT_KEY, SFP16_BEGIN, SFP16_END},
{ SFEVT_KEY_PRESS, SFEVT_KEY_PRESS, SFP16_BEGIN, SFP16_END},
{ SFEVT_KEY_RELEASE, SFEVT_KEY_RELEASE, SFP16_BEGIN, SFP16_END}
};
SFYHandler::RuleRec rule[lengthof(range)];
SFYDistributer _distributer;
SFCError error;
rule[0].spp = XANDLER_FUNCTION(OnKey);
rule[0].reference = this;
rule[1].spp = XANDLER_FUNCTION(OnKeyPress);
rule[1].reference = this;
rule[2].spp = XANDLER_FUNCTION(OnKeyRelease);
rule[2].reference = this;
error = _distributer.RegisterHandler(atomic_cast(range), rule, lengthof(range));
[ public ] SFCError RegisterTracer( SFXEventRangeConstRef range // イベント範囲 SFYTracer::RuleRecConstRef rule // トレーサ規則 );
[ public ] SFCError RegisterTracer( SFXEventRangeConstRef range // イベント範囲 SFYTracer::OrderEnum order // 処理順序 SFYTracer::StateEnum state // 配信条件 Bool overload // 重複条件 );
[ public ] SFCError RegisterTracer( SFXEventRangeConstPtr range // イベント範囲の配列 SFYTracer::RuleRecConstPtr rule // トレーサ規則の配列 SInt32 length // 配列の要素数 );
[ public ] SFCError RegisterTracer( SFXEventRangeConstPtr range // イベント範囲の配列 SFYTracer::OrderEnumConstPtr order // 配信順序の配列 SFYTracer::StateEnumConstPtr state // 配信条件の配列 BoolConstPtr overload // 重複条件の配列 SInt32 length // 配列の要素数 );
トレーサ規則が適応されるイベントの範囲を表します。
配信順序と配信条件と重複条件のセットを表します。
イベント範囲やトレーサ規則が同じ条件の要素を複数個登録することができます。この場合、最後に登録された要素が優先的に評価されます。
1つのトレーサを登録する方法
SFYDistributer _distributer; SFCError error; error = _distributer.RegisterTracer(SFXEventRange(SFEVT_APP_START, SFEVT_APP_START, SFP16_BEGIN, SFP16_END), SFYTracer::ORDER_BACKWARD, SFYTracer::STATE_ALL, true);
複数のトレーサをまとめて登録する方法
static SFXEventRange::AtomRecConst range[] = {
{ SFEVT_APP_START, SFEVT_APP_START, SFP16_BEGIN, SFP16_END},
{ SFEVT_APP_STOP, SFEVT_APP_STOP, SFP16_BEGIN, SFP16_END},
{ SFEVT_APP_RESUME, SFEVT_APP_RESUME, SFP16_BEGIN, SFP16_END},
{ SFEVT_APP_SUSPEND, SFEVT_APP_SUSPEND, SFP16_BEGIN, SFP16_END}
};
static SFYTracer::RuleRecConst rule[lengthof(range)] = {
{ SFYTracer::ORDER_BACKWARD, SFYTracer::STATE_ALL, true},
{ SFYTracer::ORDER_FORWARD, SFYTracer::STATE_ALL, true},
{ SFYTracer::ORDER_BACKWARD, SFYTracer::STATE_ALL, true},
{ SFYTracer::ORDER_FORWARD, SFYTracer::STATE_ALL, true}
};
SFYDistributer _distributer;
SFCError error;
error = _distributer.RegisterTracer(atomic_cast(range), rule, lengthof(range));
[ public ] Void Terminate(Void);
イベントの配信に必要なすべてのリソースを解放して終了します。
このクラスがレスポンダツリーに関連付けられている場合、この関数を呼び出す前に関係するすべてのレスポンダを破棄しておきます。
[ public ] Void UnregisterHandler( SFXEventRangeConstRef range // イベント範囲 SFYHandler::RuleRecConstRef rule // ハンドラ規則 );
[ public ] Void UnregisterHandler( SFXEventRangeConstRef range // イベント範囲 SFYHandler::HandlerSPP spp // ハンドラ関数 VoidPtr reference // リファレンス値 );
[ public ] Void UnregisterHandler( SFXEventRangeConstPtr range // イベント範囲の配列 SFYHandler::RuleRecConstPtr rule // ハンドラ規則の配列 SInt32 length // 配列の要素数 );
[ public ] Void UnregisterHandler( SFXEventRangeConstPtr range // イベント範囲の配列 SFYHandler::HandlerSPPConstPtr spp // ハンドラ関数の配列 VoidPtrConstPtr reference // リファレンス値の配列 SInt32 length // 配列の要素数 );
ハンドラ規則が適応されるイベントの範囲を表します。
ハンドラ関数とリファレンス値のセットを表します。
登録が解除されるハンドラは、イベント範囲とハンドラ規則が完全に一致するものに限ります。また、同じ条件の要素が複数個登録されている場合は、最後に登録された要素が解除されます。
[ public ] Void UnregisterTracer( SFXEventRangeConstRef range // イベント範囲 );
[ public ] Void UnregisterTracer( SFXEventRangeConstPtr range // イベント範囲の配列 SInt32 length // 配列の要素数 );
トレーサ規則が適応されるイベントの範囲を表します。
登録が解除されるトレーサは、イベント範囲が完全に一致するものに限ります。また、同じ条件の要素が複数個登録されている場合は、最後に登録された要素が解除されます。
|
Copyright (C) 2002 - 2009 Sophia Cradle Incorporated All Rights Reserved. |
![]() ![]() ![]()
|