SophiaFramework UNIVERSE 5.3 |
SFYHandler は、ハンドラのリストを管理するクラスです。
このクラスの関数は、 SFYDistributer クラスと SFYResponder クラスを通して利用され、 開発者が直接操作することはありません。
型 |
---|
HandlerSPP ハンドラ関数の型です。
|
RuleRec ハンドラ関数とリファレンス値のセットを表します。
|
typedef Bool(* SFYHandler::HandlerSPP)(SFYResponderPtr invoker, SFXEventConstRef event, VoidPtr reference) SFMTYPEDEFTYPE(SFYHandler::HandlerSPP)
SFYDistributer、SFYResponder、 SFYApplication クラスで利用するハンドラ関数の型です。
第 1 引数にこのハンドラ関数を呼び出したレスポンダ、第 2 引数にイベント、第 3 引数にリファレンス値が渡されます。
SFYDistributer | SFYResponder | SFYApplication | SFYDistributer::RegisterHandler | SFYResponder::RegisterHandler | SFYApplication::RegisterHandler
typedef Bool (*HandlerSPP)(SFYResponderPtr invoker, SFXEventConstRef event, VoidPtr reference); SFMTYPEDEFTYPE(HandlerSPP) SFMTYPEDEFSTRUCT(RuleRec) struct RuleRec { HandlerSPP spp; // ハンドラ関数 VoidPtr reference; // リファレンス値 };
SFYDistributer::RegisterHandler 関数、 SFYResponder::RegisterHandler 関数、 SFYApplication::RegisterHandler 関数で利用する構造体です。
以下は、複数のハンドラをまとめて登録するコードです。
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)]; 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 = RegisterHandler(atomic_cast(range), rule, lengthof(range));
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |