前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFYHandler
ハンドラを管理するクラスです。
#include <SFYHandler.h.hpp>
class SFYHandler;
SFMTYPEDEFCLASS(SFYHandler)

協調図

SFYHandler クラスの協調図

解説

SFYHandler は、ハンドラのリストを管理するクラスです。

このクラスの関数は、 SFYDistributer クラスと SFYResponder クラスを通して利用され、 開発者が直接操作することはありません。

参照

SFYDistributer | SFYResponder | SFYApplication

メンバ

HandlerSPP
ハンドラ関数の型です。
RuleRec
ハンドラ関数とリファレンス値のセットを表します。

SFYHandler::HandlerSPP
ハンドラ関数の型です。
typedef Bool(* SFYHandler::HandlerSPP)(SFYResponderPtr invoker, SFXEventConstRef event, VoidPtr reference)
SFMTYPEDEFTYPE(SFYHandler::HandlerSPP)

解説

SFYDistributerSFYResponderSFYApplication クラスで利用するハンドラ関数の型です。

第 1 引数にこのハンドラ関数を呼び出したレスポンダ、第 2 引数にイベント、第 3 引数にリファレンス値が渡されます。

参照

SFYDistributer | SFYResponder | SFYApplication | SFYDistributer::RegisterHandler | SFYResponder::RegisterHandler | SFYApplication::RegisterHandler


SFYHandler::RuleRec
ハンドラ関数とリファレンス値のセットを表します。
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));

参照

SFYDistributer::RegisterHandler | SFYResponder::RegisterHandler | SFYApplication::RegisterHandler