前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.2
SFYApplication
レスポンダシステムを利用するアプリのアプリケーションクラスの雛型です。
#include <SFYApplication.h.hpp>
class SFYApplication : public SFCApplication;
SFMTYPEDEFCLASS(SFYApplication)

継承図

SFYApplication クラスの継承図

協調図

SFYApplication クラスの協調図

解説

■ 仕様と使い方

SFYApplication クラスは、 アプリケーションクラスを実装するための起点(基底クラス)となります。

SFY アプリの開発では、 アプリケーションクラスを 1 アプリに付き 1 つ用意する必要があります。

アプリケーションクラスのインスタンスは、 最初に作成され最後に破棄される、SFY アプリの実行を制御する中核モジュールです。

■イベント処理[全体的な処理の流れ]

  1. 登録されていれば、最初に優先的イベントハンドラを呼び出して BREW 環境から受信したイベント(BREW イベント)を優先的に処理します。
  2. SFEVT_APP_START / SFEVT_APP_RESUME イベントを受信したとき、 HandleRender 関数を呼び出して全画面を再描画します。
  3. SFEVT_APP_START / SFEVT_APP_RESUME / SFEVT_APP_STOP / SFEVT_APP_SUSPEND イベントを受信したとき、 あるいは、優先的イベントハンドラがイベントを処理しなかったとき、 HandleEvent 関数を呼び出してイベント処理を行います。
  4. メモリ不足などの致命的エラーが発生したときは、HandleError 関数を呼び出してエラー処理を行います。 デフォルトの設定では、この関数は SFYApplication::HandleRender / SFYApplication::HandleEvent 関数の内部から呼び出されます。

参照: SFCApplication クラスの解説: イベント処理 −全体的な処理の流れ−

[Note] 優先的イベントハンドラ

SFXEventBypass クラスの解説を参照してください。

■階層構造

アプリケーションクラスは、 ウィンドウダイアログメニューコントロールフレームなどを管理する階層構造の頂点に位置します。

SFY レスポンダシステムでは、 アプリケーションクラスがウィンドウやダイアログ、メニューを管理し、 ウィンドウやダイアログがコントロールを管理するという階層構造になっています。

図 281. アプリケーションとレスポンダの所有関係

アプリケーションとレスポンダの所有関係
[Note] SFYApplication クラスが保持するルート

SFYApplication は、 デフォルトでルートレスポンダとしてルートSFZRoot)を 1 つ保持します。

アプリの GUI はルートを頂点とするレスポンダツリーを構築して実現します。

アプリケーションクラスに対してレスポンダ操作を行えますが、すべてルートに委譲されます。

※ アプリケーションクラスに複数のルートを保持させることも可能ですが、 一般的なアプリ開発ではその必要性はほとんどありません。

■仮想関数

アプリケーションクラスは、 デフォルトの配信エンジン描画エンジンルートを実装し、 いくつかの仮想関数のデフォルトの動作も実装します。

表 230. 仮想関数名とデフォルトの動作

仮想関数名 デフォルトの動作 オーバーライド
SFYApplication::HandleEvent 配信エンジンを起動し、イベントが処理された場合はさらに描画エンジンを起動※1 任意
SFYApplication::HandleRender 描画エンジンを起動し、画面を強制的に再描画※1 任意
SFCApplication::HandleError 任意
[Note] 注釈

※1. 配信エンジンや描画エンジンの起動中にメモリ不足などのエラーが発生するなど致命的なエラーが発生した場合は SFCApplication::HandleError 関数を起動します。

■ユーザー定義アプリケーションクラスの作成

ユーザー定義アプリケーションクラスを作成するときに最低限必要なコードを示します。

例 858. 宣言

SFMTYPEDEFCLASS(USRApplication)
class USRApplication : public SFYApplication {
    SFMSEALCOPY(USRApplication)
public:
    static SFCInvokerPtr Factory(Void);
private:
    explicit USRApplication(Void) static_throws;
    virtual ~USRApplication(Void);
};

例 859. 実装

// ブートローダ : BREW アプリで最初に実行される関数
SFCApplet::FactorySPP SFCApplet::Boot(AEECLSID id, SFXAnsiStringPtr license)
{
    // ここにライセンスコードを記述する
    *license = "heap://";

    return (id == AEECLSID_USRAPPLICATION) ? (&USRApplication::Factory) : (null);
}

// ファクトリ関数 : ユーザー定義アプリケーションクラスのインスタンスを生成する関数
SFCInvokerPtr USRApplication::Factory(Void)
{
    return ::new USRApplication;
}

// コンストラクタ
USRApplication::USRApplication(Void) static_throws
{
    if (static_try()) {

        // 初期化処理を記述する
    }
}

// デストラクタ
USRApplication::~USRApplication(Void)
{
    // 終了処理を記述する
}
[Caution] コンストラクタやデストラクタ内の return 文

C++ ではコンストラクタやデストラクタでは return 文を記述しません。

GCC を使う場合、コンストラクタやデストラクタ内で return 文を記述すると、 特定の継承関係になっているときにコンパイラがフリーズするバグが確認されています。

参照

アプリケーションクラス(基礎編) | SFY レスポンダシステム | ウィンドウ | ダイアログ | メニュー | コントロール | フレーム | レスポンダツリー | ルートレスポンダ | ルート | SFZRoot | SFCApplication

メンバ

コンストラクタ/デストラクタ
SFYApplication( Void )
SFYApplication クラスのコンストラクタです。
SFYApplication( SFXBaseEditorPtr editor )
SFYApplication クラスのコンストラクタです。
~SFYApplication( Void )
SFYApplication クラスのデストラクタです。
パブリック関数
Void ClearHandler( Void )
ルートのハンドラの登録をすべて解除します。
Void ClearTracer( Void )
ルートのトレーサの配信規則の登録をすべて解除します。
SFCError Distribute( SFXEventConstRef event , BoolPtr result = null )
指定された配信型イベントを SFYDistributer インスタンスとルート以下のレスポンダツリーに配信します。
SFYResponderSmp GetChildBack( Void )
最背面に位置するルートの子レスポンダを取得します。
SFYResponderSmp GetChildBack( Bool visible , Bool active , Bool enable , Bool focus )
最背面に位置するルートの子レスポンダを取得します。
SFYResponderSmp GetChildBack( UInt32 id )
最背面に位置するルートの子レスポンダを取得します。
SFYResponderSmp GetChildBack( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus )
最背面に位置するルートの子レスポンダを取得します。
SFYResponderSmp GetChildBackward( SInt32 index )
背面から数えて指定された順番に位置するルートの子レスポンダを取得します。
SFYResponderSmp GetChildBackward( SInt32 index , Bool visible , Bool active , Bool enable , Bool focus )
背面から数えて指定された順番に位置するルートの子レスポンダを取得します。
SFYResponderSmp GetChildBackward( SInt32 index , UInt32 id )
背面から数えて指定された順番に位置するルートの子レスポンダを取得します。
SFYResponderSmp GetChildBackward( SInt32 index , UInt32 id , Bool visible , Bool active , Bool enable , Bool focus )
背面から数えて指定された順番に位置するルートの子レスポンダを取得します。
SInt32 GetChildCount( Void )
ルートの子レスポンダの数を取得します。
SInt32 GetChildCount( Bool visible , Bool active , Bool enable , Bool focus )
ルートの子レスポンダの数を取得します。
SInt32 GetChildCount( UInt32 id )
ルートの子レスポンダの数を取得します。
SInt32 GetChildCount( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus )
ルートの子レスポンダの数を取得します。
SFYResponderSmp GetChildForward( SInt32 index )
前面から数えて指定された順番に位置するルートの子レスポンダを取得します。
SFYResponderSmp GetChildForward( SInt32 index , Bool visible , Bool active , Bool enable , Bool focus )
前面から数えて指定された順番に位置するルートの子レスポンダを取得します。
SFYResponderSmp GetChildForward( SInt32 index , UInt32 id )
前面から数えて指定された順番に位置するルートの子レスポンダを取得します。
SFYResponderSmp GetChildForward( SInt32 index , UInt32 id , Bool visible , Bool active , Bool enable , Bool focus )
前面から数えて指定された順番に位置するルートの子レスポンダを取得します。
SFYResponderSmp GetChildFront( Void )
最前面に位置するルートの子レスポンダを取得します。
SFYResponderSmp GetChildFront( Bool visible , Bool active , Bool enable , Bool focus )
最前面に位置するルートの子レスポンダを取得します。
SFYResponderSmp GetChildFront( UInt32 id )
最前面に位置するルートの子レスポンダを取得します。
SFYResponderSmp GetChildFront( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus )
最前面に位置するルートの子レスポンダを取得します。
static
SFYDistributerPtr
GetDistributer( Void )
ルートに設定されている配信エンジンを取得します。
static
SFXBaseEditorPtr
GetEditor( Void )
テキスト入力コントロール処理用エディタを取得します。
SFXRectangle GetGlobalBound( Void )
ルートのグローバル領域を取得します。
static
SFYApplicationPtr
GetInstance( Void )
アプリケーションクラスのインスタンスを取得します。
SFXRectangle GetLocalBound( Void )
ルートのローカル領域を取得します。
SFXRectangleConstRef GetRealBound( Void )
ルートの実領域を取得します。
static
SFYRendererPtr
GetRenderer( Void )
ルートに設定されている描画エンジンを取得します。
static
SFYResponderSmp
GetRoot( Void )
SFYApplication クラスが内部に保持しているルートを取得します。
SFXRectangle GetSuitableBound( Void )
ルートの最適な領域(サイズ)を取得します。
SFXRectangle GetSuitableBound( SFXRectangleConstRef param )
ルートの最適な領域(サイズ)を取得します。
SFXRectangleConstRef GetVirtualBound( Void )
ルートの仮想領域を取得します。
Void Invalidate( Void )
指定された領域を再描画領域に登録します。
Void Invalidate( SFXRectangleConstRef param )
指定された領域を再描画領域に登録します。
Void InvokeBackward( SFXEventConstRef event , Bool overload , BoolPtr result = null )
指定されたコールバック型イベントをルートに送信します(ハンドラは登録順に起動されます)。
Void InvokeForward( SFXEventConstRef event , Bool overload , BoolPtr result = null )
指定されたコールバック型イベントをルートに送信します(ハンドラは登録の逆順に起動されます)。
SFCError RegisterHandler( SFXEventRangeConstRef range , SFYHandler::RuleRecConstRef rule )
指定されたハンドラをルートに登録します。
SFCError RegisterHandler( SFXEventRangeConstRef range , SFYHandler::HandlerSPP spp , VoidPtr reference )
指定されたハンドラをルートに登録します。
SFCError RegisterHandler( SFXEventRangeConstPtr range , SFYHandler::RuleRecConstPtr rule , SInt32 length )
指定されたハンドラをルートに登録します。
SFCError RegisterHandler( SFXEventRangeConstPtr range , SFYHandler::HandlerSPPConstPtr spp , VoidPtrConstPtr reference , SInt32 length )
指定されたハンドラをルートに登録します。
SFCError RegisterTracer( SFXEventRangeConstRef range , SFYTracer::RuleRecConstRef rule )
指定された配信規則をルートのトレーサに登録します。
SFCError RegisterTracer( SFXEventRangeConstRef range , SFYTracer::OrderEnum order , SFYTracer::StateEnum state , Bool overload )
指定された配信規則をルートのトレーサに登録します。
SFCError RegisterTracer( SFXEventRangeConstPtr range , SFYTracer::RuleRecConstPtr rule , SInt32 length )
指定された配信規則をルートのトレーサに登録します。
SFCError RegisterTracer( SFXEventRangeConstPtr range , SFYTracer::OrderEnumConstPtr order , SFYTracer::StateEnumConstPtr state , BoolConstPtr overload , SInt32 length )
指定された配信規則をルートのトレーサに登録します。
SFCError Render( Bool force = false )
ルート以下のレスポンダツリーを再描画します。
Void SetRealBound( SFXRectangleConstRef param )
指定された領域をルートの実領域に設定します。
Void SetVirtualBound( SFXRectangleConstRef param )
指定された領域をルートの仮想領域に設定します。
Void UnregisterHandler( SFXEventRangeConstRef range , SFYHandler::RuleRecConstRef rule )
指定されたハンドラの登録を解除します。
Void UnregisterHandler( SFXEventRangeConstRef range , SFYHandler::HandlerSPP spp , VoidPtr reference )
指定されたハンドラの登録を解除します。
Void UnregisterHandler( SFXEventRangeConstPtr range , SFYHandler::RuleRecConstPtr rule , SInt32 length )
指定されたハンドラの登録を解除します。
Void UnregisterHandler( SFXEventRangeConstPtr range , SFYHandler::HandlerSPPConstPtr spp , VoidPtrConstPtr reference , SInt32 length )
指定されたハンドラの登録を解除します。
Void UnregisterTracer( SFXEventRangeConstRef range )
ルートのトレーサから指定された配信規則の登録を解除します。
Void UnregisterTracer( SFXEventRangeConstPtr range , SInt32 length )
ルートのトレーサから指定された配信規則の登録を解除します。
static
AEECLSID
GetClassID( Void ) (SFCApplication から継承)
BREW アプリの ClassID を取得します。
Bool IsRenderable( Void ) (SFCApplication から継承)
画面の描画が可能かどうかを判定します。
SFCError RegisterBypass( CallbackSPP spp , VoidPtr reference ) (SFCApplication から継承)
イベントを優先的に処理するためのコールバックを登録します。
static
SFCError
Terminate( Bool idle = false ) (SFCApplication から継承)
アクティブなアプリを終了します。
Void UnregisterBypass( CallbackSPP spp , VoidPtr reference ) (SFCApplication から継承)
優先的イベントハンドラの登録を解除します。
プロテクト関数
SFYResponderSmp GetThis( Void )
SFYApplication クラスが内部に保持しているルートを取得します。
Bool HandleEvent( SFXEventConstRef event )
アプリが BREW イベントを受信したときに呼び出される関数です(BREW イベントを処理します)。
Bool HandleRender( SFXEventConstRef event )
アプリ開始時とレジューム時に呼び出される関数です(全画面を再描画します)。
Bool HandleError( SFXEventConstRef event , SFCError error ) (SFCApplication から継承)
致命的なエラーが発生した場合に呼び出される関数です。
Bool Invoke( SFXEventConstRef event ) (SFCApplication から継承)
BREW イベント受信時に呼び出される仮想関数です。
CallbackSPP (SFCApplication から継承)
優先的イベントハンドラの型です。

SFYApplication::SFYApplication
SFYApplication クラスのコンストラクタです。
[ protected, explicit ]
SFYApplication(Void);
[ protected, explicit ]
SFYApplication(
    SFXBaseEditorPtr editor   // テキスト入力コントロールエディタ
);

解説

このコンストラクタは、以下の初期化処理を行います。

  1. SFYApplication クラスがデフォルトで保持するテキスト入力コントロールエディタを作成する
  2. SFYApplication クラスがデフォルトで保持するルートを作成する
  3. 配信エンジンを初期化する
  4. 描画エンジンを初期化する
  5. ルートに配信エンジンと描画エンジンを関連付ける
  6. ルートの実領域レスポンダ空間に設定する
  7. ルートの状態を「可視+活性+操作可能+フォーカス」にまとめて設定する

詳細は、下記のコードを参照してください。

内部実装

SFYApplication::SFYApplication 関数の内部実装は以下の通りです。

// SFYApplication クラスの定義
class SFYApplication : public SFCApplication {

    SFMSEALCOPY(SFYApplication)

    private:
                SFZRootSmp       _root;        // ルート
                SFYDistributer   _distributer; // 配信エンジン
                SFYRenderer      _renderer;    // 描画エンジン
                SFXBaseEditorPtr _editor;      // テキスト入力コントロールエディタ

    public:

    ...

};


// SFYApplication クラスのコンストラクタの実装
/*protected */SFYApplication::SFYApplication(Void) : _editor(null) static_throws
{
    // 初期化処理

    if (static_try()) {

        // テキスト入力コントロールエディタを作成する
        if ((_editor = ::new SFXEditor) != null) {

            // ルート、配信エンジン、描画エンジンの初期化を行う
            static_throw(Initialize());
        }
        else {

            static_throw(SFERR_NO_MEMORY);
        }
    }
}// SFYApplication::SFYApplication //


// SFYApplication クラスのコンストラクタの実装
/*protected */SFYApplication::SFYApplication(SFXBaseEditorPtr editor) : _editor(editor) static_throws
{
    // 初期化処理

    if (static_try()) {

        // テキスト入力コントロールエディタが設定されているか
        if (_editor != null) {

            // ルート、配信エンジン、描画エンジンの初期化を行う
            static_throw(Initialize());
        }
        else {

            static_throw(SFERR_NO_MEMORY);
        }
    }
}// SFYApplication::SFYApplication //

/*private */SFCError SFYApplication::Initialize(Void)
{
    SFCError  error;

    // 配信エンジンを初期化する
    if ((error = _distributer.Initialize()) == SFERR_NO_ERROR) {

        // 描画エンジンを初期化する
        // ※ 引数に指定した携帯電話の画面全体がレスポンダ空間として設定される
        if ((error = _renderer.Initialize(SFXGraphics::GetDeviceRectangle())) == SFERR_NO_ERROR) {

           // ルートを作成する
           if ((_root = SFZRoot::NewInstance(&error)) != null) {

                // ルートに配信エンジンを設定する
                _root->SetDistributer(&_distributer);

                // ルートに描画エンジンを設定する
                _root->SetRenderer(&_renderer);

                // ルートの実領域を設定する
                // ※1. 親レスポンダが存在しないルートはレスポンダ空間内に実領域を設定する
                // ※2. _root->GetSuitableBound() はレスポンダ空間(=「携帯電話の画面全体」)を返す
                // ※3. ルートの実領域は携帯電話の画面全体に設定される
                _root->SetRealBound(_root->GetSuitableBound());

                // ルートの状態を「可視+活性+操作可能+フォーカス」にまとめて設定する
                _root->SetState(true, true, true, true);
            }
        }
    }
    return error;
}// SFYApplication::Initialize //

参照: SFYDistributer::Initialize | SFYRenderer::Initialize | SFZRoot::NewInstance | SFYResponder::SetDistributer | SFYResponder::SetRenderer | SFYResponder::SetRealBound | SFYResponder::SetState |

参照

SFZRoot | SFYDistributer | SFYRenderer | SFXEditor | 配信エンジン | 描画エンジン | レスポンダ空間 | ルート | ルートレスポンダ | 実領域 | 状態


SFYApplication::~SFYApplication
SFYApplication クラスのデストラクタです。
[ protected, pure-virtual ]
virtual ~SFYApplication(Void);

解説

このデストラクタは、以下の処理を行います。

  1. SFYApplication クラスがデフォルトで保持するテキスト入力コントロールエディタを破棄する
  2. レスポンダツリーを解放する
  3. 描画エンジンを終了する
  4. 配信エンジンを終了する

詳細は、下記のコードを参照してください。

内部実装

SFYApplication::~SFYApplication 関数の内部実装は以下の通りです。

// SFYApplication クラスの定義
class SFYApplication : public SFCApplication {
    SFMSEALCOPY(SFYApplication)
    private:
                SFZRootSmp       _root;        // ルート
                SFYDistributer   _distributer; // 配信エンジン
                SFYRenderer      _renderer;    // 描画エンジン
                SFXBaseEditorPtr _editor;      // テキスト入力コントロールエディタ

    public:

    ...

};


// SFYApplication クラスのデストラクタの実装
/*protected virtual */SFYApplication::~SFYApplication(Void)
{

    // 終了処理(必ず下記の順序で行う)

    // テキスト入力コントロールエディタを破棄する
    ::delete _editor;

    // レスポンダツリーを解放する
    _root.Release();

    // 描画エンジンを終了する
    _renderer.Terminate();

    // 配信エンジンを終了する
    _distributer.Terminate();

}// SFYApplication::~SFYApplication //

参照: SFXResponderPointer::Release | SFYRenderer::Terminate | SFYDistributer::Terminate

参照

SFZRoot | 配信エンジン | 描画エンジン | ルート | ルートレスポンダ | レスポンダツリー


SFYApplication::ClearHandler
ルートのハンドラの登録をすべて解除します。
[ public ]
Void ClearHandler(Void);

解説

この関数は、 SFYApplication クラスが内部に保持しているルートのハンドラの登録をすべて解除します。

[Note] 注意

この操作は SFYApplication クラスが内部に保持しているルートに委譲されて処理されます。

[Note] 注意

詳細は、 SFYResponder::ClearHandler 関数の解説を参照してください。

参照

SFYResponder::ClearHandler | SFYApplication::RegisterHandler | SFYApplication::UnregisterHandler | SFZRoot | ハンドラ | ルート


SFYApplication::ClearTracer
ルートのトレーサの配信規則の登録をすべて解除します。
[ public ]
Void ClearTracer(Void);

解説

この関数は、 SFYApplication クラスが内部に保持しているルートのトレーサの配信規則の登録をすべて解除します。

[Note] 注意

この操作は SFYApplication クラスが内部に保持しているルートに委譲されて処理されます。

[Note] 注意

詳細は、 SFYResponder::ClearTracer 関数の解説を参照してください。

参照

SFYResponder::ClearTracer | SFYApplication::RegisterTracer | SFYApplication::UnregisterTracer | SFYTracer SFZRoot | ルート | トレーサ


SFYApplication::Distribute
指定された配信型イベントを SFYDistributer インスタンスとルート以下のレスポンダツリーに配信します。
[ public ]
SFCError Distribute(
    SFXEventConstRef event   // イベント
    BoolPtr result = null    // 処理結果
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • SFYDistributer インスタンスがルートに設定されていないとき: SFERR_INVALID_STATE
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、 指定された配信型イベントを、 SFYApplication クラスが内部に保持している ルートに設定された SFYDistributer インスタンスと ルート以下のレスポンダツリーに配信します。

イベントは、SFYDistributer インスタンス、ルート以下のレスポンダツリーの順に、 トレーサに登録された配信規則に基づき配信されます。

配信エンジンSFYDistributer インスタンス)がルートに設定されていない場合は、 SFERR_INVALID_STATE が返ります (デフォルトの設定では、 SFYApplication クラスが内部に保持しているルートに設定されているので、 このエラーは発生しません)。

[Note] 注意

result 引数に true が返された場合は、 レスポンダの状態が変化している可能性があるため、 SFYApplication::Render 関数を呼び出して再描画することを推奨します。

[Note] 注意

この操作は SFYApplication クラスが内部に保持しているルートに委譲されて処理されます。

[Note] 注意

Distribute 関数の詳細は、 SFYResponder::Distribute 関数の解説を参照してください。

参照

SFYResponder::Distribute | SFYApplication::Render | SFXEvent | SFYDistributer | SFZRoot | ルート | 配信エンジン | レスポンダツリー | イベントループ | 配信型 | コールバック型 | イベント


SFYApplication::GetChildBack
最背面に位置するルートの子レスポンダを取得します。
[ public, const ]
SFYResponderSmp GetChildBack(Void);
[ public, const ]
SFYResponderSmp GetChildBack(
    Bool visible   // 可視条件
    Bool active    // 活性条件
    Bool enable    // 操作可能条件
    Bool focus     // フォーカス条件
);
[ public, const ]
SFYResponderSmp GetChildBack(
    UInt32 id   // ID
);
[ public, const ]
SFYResponderSmp GetChildBack(
    UInt32 id      // ID
    Bool visible   // 可視条件
    Bool active    // 活性条件
    Bool enable    // 操作可能条件
    Bool focus     // フォーカス条件
);

戻り値

最背面に位置するルートの子レスポンダ。

存在しない場合は null を返します。

解説

この関数は、 SFYApplication クラスが内部に保持しているルートについて、 最背面に位置する子レスポンダを取得します。

[Note] 注意

この操作は SFYApplication クラスが内部に保持しているルートに委譲されて処理されます。

[Tip] Tip

検索に含めるルートの子レスポンダを ID、可視、活性、操作可能、 フォーカスの状態で制限できます。

[Tip] Tip

アタッチメントフレームは、検索の対象外です。

[Note] 注意

詳細は、 SFYResponder::GetChildBack 関数の解説を参照してください。

使用例

SFYResponderSmp child;

すべてのルートの子レスポンダの中で最背面のレスポンダを取得する方法
child = GetChildBack();

ID = 128 のルートの子レスポンダの中で最背面のレスポンダを取得する方法
child = GetChildBack(128);

可視かつ活性なルートの子レスポンダの中で最背面のレスポンダを取得する方法(操作可能とフォーカスの状態は問わない)
child = GetChildBack(true, true, false, false);

可視、活性かつ操作可能なルートの子レスポンダの中で最背面のレスポンダを取得する方法(フォーカスの状態は問わない)
child = GetChildBack(true, true, true, false);

参照

SFYResponder::GetChildBack | SFYApplication::GetChildFront | SFYApplication::GetChildBackward | SFZRoot | ID | 状態 | 子レスポンダ | ルート


SFYApplication::GetChildBackward
背面から数えて指定された順番に位置するルートの子レスポンダを取得します。
[ public, const ]
SFYResponderSmp GetChildBackward(
    SInt32 index   // 順番 (0-based)
);
[ public, const ]
SFYResponderSmp GetChildBackward(
    SInt32 index   // 順番 (0-based)
    Bool visible   // 可視条件
    Bool active    // 活性条件
    Bool enable    // 操作可能条件
    Bool focus     // フォーカス条件
);
[ public, const ]
SFYResponderSmp GetChildBackward(
    SInt32 index   // 順番 (0-based)
    UInt32 id      // ID
);
[ public, const ]
SFYResponderSmp GetChildBackward(
    SInt32 index   // 順番 (0-based)
    UInt32 id      // ID
    Bool visible   // 可視条件
    Bool active    // 活性条件
    Bool enable    // 操作可能条件
    Bool focus     // フォーカス条件
);

戻り値

背面から数えて指定された順番に位置するルートの子レスポンダ。

存在しない場合は null を返します。

解説

この関数は、 SFYApplication クラスが内部に保持しているルートについて、 背面から数えて指定された順番に位置する子レスポンダを取得します。

[Note] 注意

この操作は SFYApplication クラスが内部に保持しているルートに委譲されて処理されます。

[Tip] Tip

検索に含めるルートの子レスポンダを ID、可視、活性、操作可能、 フォーカスの状態で制限できます。

[Tip] Tip

アタッチメントフレームは、検索の対象外です。

[Note] 注意

詳細は、 SFYResponder::GetChildBackward 関数の解説を参照してください。

使用例

SFYResponderSmp child;

すべてのルートの子レスポンダの中で背面から 3 番目のレスポンダを取得する方法
child = GetChildBackward(2);

ID = 128 のルートの子レスポンダの中で背面から 3 番目のレスポンダを取得する方法
SFYResponderSmp child;

可視かつ活性なルートの子レスポンダの中で背面から 3 番目のレスポンダを取得する方法(操作可能とフォーカスの状態は問わない)
child = GetChildBackward(2, true, true, false, false);

可視、活性かつ操作可能なルートの子レスポンダの中で背面から 3 番目のレスポンダを取得する方法(フォーカスの状態は問わない)
child = GetChildBackward(2, true, true, true, false);

参照

SFYResponder::GetChildBackward | SFYApplication::GetChildForward | SFYApplication::GetChildBack | SFZRoot | ID | 状態 | ルートの子レスポンダ | ルート


SFYApplication::GetChildCount
ルートの子レスポンダの数を取得します。
[ public, const ]
SInt32 GetChildCount(Void);
[ public, const ]
SInt32 GetChildCount(
    Bool visible   // 可視条件
    Bool active    // 活性条件
    Bool enable    // 操作可能条件
    Bool focus     // フォーカス条件
);
[ public, const ]
SInt32 GetChildCount(
    UInt32 id   // ID
);
[ public, const ]
SInt32 GetChildCount(
    UInt32 id      // ID
    Bool visible   // 可視条件
    Bool active    // 活性条件
    Bool enable    // 操作可能条件
    Bool focus     // フォーカス条件
);

戻り値

ルートの子レスポンダの数。

解説

この関数は、 SFYApplication クラスが内部に保持しているルートについて、 子レスポンダの数を取得します。

[Note] 注意

この操作は SFYApplication クラスが内部に保持しているルートに委譲されて処理されます。

[Tip] Tip

検索に含めるルートの子レスポンダを ID、可視、活性、操作可能、 フォーカスの状態で制限できます。

[Tip] Tip

アタッチメントフレームは、検索の対象外です。

[Note] 注意

詳細は、 SFYResponder::GetChildCount 関数の解説を参照してください。

使用例

SInt32 count;

すべてのルートの子レスポンダの数を取得する方法
count = GetChildCount();

ID = 128 のルートの子レスポンダの数を取得する方法
count = GetChildCount(128);

可視かつ活性なルートの子レスポンダの数を取得する方法(操作可能とフォーカスの状態は問わない)
count = GetChildCount(true, true, false, false);

可視、活性かつ操作可能なルートの子レスポンダの数を取得する方法(フォーカスの状態は問わない)
count = GetChildCount(true, true, true, false);

参照

SFYResponder::GetChildCount | SFZRoot | ID | 状態 | 子レスポンダ | ルート


SFYApplication::GetChildForward
前面から数えて指定された順番に位置するルートの子レスポンダを取得します。
[ public, const ]
SFYResponderSmp GetChildForward(
    SInt32 index   // 順番 (0-based)
);
[ public, const ]
SFYResponderSmp GetChildForward(
    SInt32 index   // 順番 (0-based)
    Bool visible   // 可視条件
    Bool active    // 活性条件
    Bool enable    // 操作可能条件
    Bool focus     // フォーカス条件
);
[ public, const ]
SFYResponderSmp GetChildForward(
    SInt32 index   // 順番 (0-based)
    UInt32 id      // ID
);
[ public, const ]
SFYResponderSmp GetChildForward(
    SInt32 index   // 順番 (0-based)
    UInt32 id      // ID
    Bool visible   // 可視条件
    Bool active    // 活性条件
    Bool enable    // 操作可能条件
    Bool focus     // フォーカス条件
);

戻り値

前面から数えて指定された順番に位置するルートの子レスポンダ。

存在しない場合は null を返します。

解説

この関数は、 SFYApplication クラスが内部に保持しているルートについて、 前面から数えて指定された順番に位置する子レスポンダを取得します。

[Note] 注意

この操作は SFYApplication クラスが内部に保持しているルートに委譲されて処理されます。

[Tip] Tip

検索に含めるルートの子レスポンダを ID、可視、活性、操作可能、 フォーカスの状態で制限できます。

[Tip] Tip

アタッチメントフレームは、検索の対象外です。

[Note] 注意

詳細は、 SFYResponder::GetChildForward 関数の解説を参照してください。

使用例

SFYResponderSmp child;

すべてのルートの子レスポンダの中で前面から 3 番目のレスポンダを取得する方法
child = GetChildForward(2);

ID = 128 のルートの子レスポンダの中で前面から 3 番目のレスポンダを取得する方法
child = GetChildForward(2, 128);

可視かつ活性なルートの子レスポンダの中で前面から 3 番目のレスポンダを取得する方法(操作可能とフォーカスの状態は問わない)
child = GetChildForward(2, true, true, false, false);

可視、活性かつ操作可能なルートの子レスポンダの中で前面から 3 番目のレスポンダを取得する方法(フォーカスの状態は問わない)
child = GetChildForward(2, true, true, true, false);

参照

SFYResponder::GetChildForward | SFYApplication::GetChildBackward | SFZRoot | ID | 状態 | 子レスポンダ | ルート


SFYApplication::GetChildFront
最前面に位置するルートの子レスポンダを取得します。
[ public, const ]
SFYResponderSmp GetChildFront(Void);
[ public, const ]
SFYResponderSmp GetChildFront(
    Bool visible   // 可視条件
    Bool active    // 活性条件
    Bool enable    // 操作可能条件
    Bool focus     // フォーカス条件
);
[ public, const ]
SFYResponderSmp GetChildFront(
    UInt32 id   // ID
);
[ public, const ]
SFYResponderSmp GetChildFront(
    UInt32 id      // ID
    Bool visible   // 可視条件
    Bool active    // 活性条件
    Bool enable    // 操作可能条件
    Bool focus     // フォーカス条件
);

戻り値

最前面に位置するルートの子レスポンダ。

存在しない場合は null を返します。

解説

この関数は、 SFYApplication クラスが内部に保持しているルートについて、 最前面に位置する子レスポンダを取得します。

[Note] 注意

この操作は SFYApplication クラスが内部に保持しているルートに委譲されて処理されます。

[Tip] Tip

検索に含めるルートの子レスポンダを ID、可視、活性、操作可能、 フォーカスの状態で制限できます。

[Tip] Tip

アタッチメントフレームは、検索の対象外です。

[Note] 注意

詳細は、 SFYResponder::GetChildFront 関数の解説を参照してください。

使用例

SFYResponderSmp child;

すべてのルートの子レスポンダの中で最前面のレスポンダを取得する方法
child = GetChildFront();

ID = 128 のルートの子レスポンダの中で最前面のレスポンダを取得する方法
child = GetChildFront(128);

可視かつ活性なルートの子レスポンダの中で最前面のレスポンダを取得する方法(操作可能とフォーカスの状態は問わない)
child = GetChildFront(true, true, false, false);

可視、活性かつ操作可能なルートの子レスポンダの中で最前面のレスポンダを取得する方法(フォーカスの状態は問わない)
child = GetChildFront(true, true, true, false);

参照

SFYResponder::GetChildFront | SFYApplication::GetChildBack | SFYApplication::GetChildForward| SFZRoot | ID | 状態 | 子レスポンダ | ルート


SFYApplication::GetDistributer
ルートに設定されている配信エンジンを取得します。
[ public, static ]
SFYDistributerPtr GetDistributer(Void);

戻り値

SFYApplication クラスが内部に保持しているルートに設定された配信エンジン。

配信エンジンが設定されていない場合、null が返ります。

解説

この関数は、 SFYApplication クラスが内部に保持しているルートに設定されている配信エンジンを取得します。

[Note] 注意

この操作は SFYApplication クラスが内部に保持しているルートに委譲されて処理されます。

[Note] 注意

詳細は、 SFYResponder::GetDistributer 関数の解説を参照してください。

参照

SFYResponder::GetDistributer | 配信エンジン | SFZRoot | ルート


SFYApplication::GetEditor
テキスト入力コントロール処理用エディタを取得します。
[ public, static ]
SFXBaseEditorPtr GetEditor(Void);

戻り値

アプリケーションクラスに設定されたテキスト入力コントロール処理用エディタ。

テキスト入力コントロール処理用エディタが設定されていない場合、null が返ります。

解説

この関数は、 アプリケーションクラスが内部で保持するテキスト入力コントロール処理用エディタを取得します。

[Note] 注意

SFYApplication::SFYApplication コンストラクタの editor 引数にユーザー定義のテキスト入力コントロール処理用エディタを指定することも可能です。 この引数に何も設定しない場合は、SFXEditor インスタンスが返ります。

参照

SFYApplication::SFYApplication | SFXEditor | SFZRoot | ルート


SFYApplication::GetGlobalBound
ルートのグローバル領域を取得します。
[ public, const ]
SFXRectangle GetGlobalBound(Void);

戻り値

SFYApplication クラスが内部に保持しているルートグローバル領域

解説

この関数は、 SFYApplication クラスが内部に保持しているルートグローバル領域を取得します。

[Note] 注意

この操作は SFYApplication クラスが内部に保持しているルートに委譲されて処理されます。

[Note] 注意

詳細は、 SFYResponder::GetGlobalBound 関数の解説を参照してください。

参照

SFYResponder::GetGlobalBound | SFYApplication::GetLocalBound | SFYApplication::GetRealBound | SFZRoot | ルート | グローバル領域


SFYApplication::GetInstance
アプリケーションクラスのインスタンスを取得します。
[ public, static ]
SFYApplicationPtr GetInstance(Void);

戻り値

  • 成功したとき: アプリケーションクラスのインスタンス
  • 失敗したとき: null

解説

この関数は、 1 つのアプリにつき 1 つだけ存在する、 このアプリケーションクラスのインスタンスを取得します。

[Tip] グローバル変数

アプリケーションクラスに定義されたグローバル変数にアクセスするには、 下記の使用例のようにしてこの関数を呼び出します。

使用例

例 860. グローバル変数の定義とアクセス

//
//  ExampleAppli アプリケーションクラス(AppWizard で自動生成)
//
SFMTYPEDEFCLASS(ExampleAppli)
class ExampleAppli : public SFYApplication
{
    SFMSEALCOPY(ExampleAppli)
public:
    static SFCInvokerPtr Factory(Void);
private:
    explicit ExampleAppli(Void) static_throws;
    virtual ~ExampleAppli(Void);

    // グローバル変数 global_something_val を定義する
    SInt32 global_something_val;
public:
    // グローバル変数 global_something_val にアクセスするための GetGlobalSomethingVal 関数を宣言する
    SInt32 GetGlobalSomethingVal();
};

// グローバル変数 global_something_val にアクセスするための GetGlobalSomethingVal 関数を定義する
ExampleAppli::GetGlobalSomethingVal(Void)
{
    return global_something_val;
}

// GetGlobalSomethingVal 関数経由でグローバル変数 global_something_val の値を取得する
static_cast<ExampleAppli>(SFYApplication::GetInstance())->GetGlobalSomethingVal();

内部実装

この関数の内部実装は以下の通りです。

/*public static */inline SFYApplicationPtr SFYApplication::GetInstance(Void)
{
    return static_cast<SFYApplicationPtr>(SFCApplication::GetInstance());
}// SFYApplication::GetInstance //

参照

SFCApplication::GetInstance


SFYApplication::GetLocalBound
ルートのローカル領域を取得します。
[ public, const ]
SFXRectangle GetLocalBound(Void);

戻り値

SFYApplication クラスが内部に保持しているルートのローカル領域。

解説

この関数は、 SFYApplication クラスが内部に保持しているルートローカル領域を取得します。

[Note] 注意

この操作は SFYApplication クラスが内部に保持しているルートに委譲されて処理されます。

[Note] 注意

詳細は、 SFYResponder::GetLocalBound 関数の解説を参照してください。

参照

SFYResponder::GetLocalBound | SFYApplication::GetGlobalBound | SFYApplication::GetVirtualBound | SFZRoot | ルート | ローカル領域


SFYApplication::GetRealBound
ルートの実領域を取得します。
[ public, const ]
SFXRectangleConstRef GetRealBound(Void);

戻り値

SFYApplication クラスが内部に保持しているルートの実領域。

解説

この関数は、 SFYApplication クラスが内部に保持しているルート実領域を取得します。

[Note] 注意

この操作は SFYApplication クラスが内部に保持しているルートに委譲されて処理されます。

[Note] 注意

詳細は、 SFYResponder::GetRealBound 関数の解説を参照してください。

参照

SFYResponder::GetRealBound | SFYApplication::SetRealBound | SFYApplication::GetVirtualBound | SFYApplication::GetGlobalBound | SFZRoot | ルート | 実領域


SFYApplication::GetRenderer
ルートに設定されている描画エンジンを取得します。
[ public, static ]
SFYRendererPtr GetRenderer(Void);

戻り値

SFYApplication クラスが内部に保持しているルートに設定された描画エンジン。

描画エンジンが設定されていない場合、null が返ります。

解説

この関数は、 SFYApplication クラスが内部に保持しているルートに設定されている描画エンジンを取得します。

[Note] 注意

この操作は SFYApplication クラスが内部に保持しているルートに委譲されて処理されます。

[Note] 注意

詳細は、 SFYResponder::GetRenderer 関数の解説を参照してください。

参照

SFYResponder::GetRenderer | SFZRoot | ルート | 描画エンジン


SFYApplication::GetRoot
SFYApplication クラスが内部に保持しているルートを取得します。
[ public, static ]
SFYResponderSmp GetRoot(Void);

戻り値

SFYApplication クラスが内部に保持しているルート

存在しない場合は null を返します。

解説

この関数は、 SFYApplication クラスが内部に保持しているルートを取得します。

参照

SFYResponder::GetRoot | SFZRoot | ルート


SFYApplication::GetSuitableBound
ルートの最適な領域(サイズ)を取得します。
[ public ]
SFXRectangle GetSuitableBound(Void);
[ public ]
SFXRectangle GetSuitableBound(
    SFXRectangleConstRef param   // 参考にする領域
);

解説

この関数は、 SFYApplication クラスが内部に保持しているルート実領域の最適な領域(サイズ)を取得します。 を取得します。

引数を指定しない場合、 描画エンジンに設定されているレスポンダ空間(携帯画面全体)が返ります。

引数を指定した場合、何もせずに引数で与えた矩形領域が返るだけです。

[Caution] 注意

通常 SFYApplication::GetSuitableBound 関数は引数を指定せずに使用します。

[Note] 注意

この操作は SFYApplication クラスが内部に保持しているルートに委譲されて処理されます。

[Tip] Tip

SFYApplication クラスが内部に保持しているルートの実領域は、 SFYApplication::SFYApplication コンストラクタ内で設定されるので、この関数を使用する必要はありません。

[Note] 注意

詳細は、 SFYResponder::GetSuitableBound 関数の解説を参照してください。

参照

SFYResponder::GetSuitableBound | SFYApplication::SetRealBound | SFYApplication::SFYApplication | SFZRoot | 実領域 | レスポンダ空間 | 描画エンジン | ルート


SFYApplication::GetThis
SFYApplication クラスが内部に保持しているルートを取得します。
[ protected ]
SFYResponderSmp GetThis(Void);

戻り値

SFYApplication クラスが内部に保持しているルート

解説

この関数は、 SFYApplication クラスが内部に保持しているルートを取得します。

[Note] 注意

SFYApplication クラスはルートレスポンダとしてデフォルトでルート(SFZRoot)を1つ保持しています。

[Note] 注意

詳細は、 SFYResponder::GetThis 関数の解説を参照してください。

参照

SFYResponder::GetThis | SFZRoot | ルート | ルートレスポンダ


SFYApplication::GetVirtualBound
ルートの仮想領域を取得します。
[ public, const ]
SFXRectangleConstRef GetVirtualBound(Void);

戻り値

SFYApplication クラスが内部に保持しているルートの仮想領域。

解説

この関数は、 SFYApplication クラスが内部に保持しているルート仮想領域を取得します。

[Note] 注意

この操作は SFYApplication クラスが内部に保持しているルートに委譲されて処理されます。

[Note] 注意

詳細は、 SFYResponder::GetVirtualBound 関数の解説を参照してください。

参照

SFYResponder::GetVirtualBound | SFYApplication::SetVirtualBound | SFYApplication::GetRealBound | SFYApplication::GetLocalBound | SFZRoot | ルート | 仮想領域


SFYApplication::HandleEvent
アプリが BREW イベントを受信したときに呼び出される関数です(BREW イベントを処理します)。
[ protected, virtual ]
Bool HandleEvent(
    SFXEventConstRef event   // イベント
);

戻り値

  • BREW イベントを処理したとき: true
  • そうでないとき: false

解説

この関数は、 アプリが BREW 環境からイベント(BREW イベント) を受信したときに呼び出される仮想関数です(BREW イベントを処理します)。

イベントを処理した場合は true を返し、 そうでない場合は false を返します。

開発者はこの関数をオーバーライドすることで独自の処理を記述できます。

デフォルトの実装は以下の通りです。

  1. 配信エンジンを起動します。
  2. 配信エンジンは、 最初に SFYApplication が内部で保持するルートに関連付けられた SFYDistributer インスタンス、 その後、必要に応じてトレーサの配信規則に基づいて ルートを頂点とするレスポンダツリー上のレスポンダに受信したイベントを配信します。
  3. 1 つ以上のハンドラが true を返してイベントを処理した場合、 優先的イベントハンドラが登録されていなければ、 描画エンジンを起動して画面を再描画します。
  4. 配信エンジンや描画エンジンの起動中にメモリ不足などの致命的なエラーが発生した場合は、 SFCApplication::HandleError 関数を呼び出します。

[Note] 優先的イベントハンドラ

SFXEventBypass クラスの解説を参照してください。

詳細は、以下の内部実装のコードを参照してください。

内部実装

この関数の内部実装は以下の通りです。

// BREW 環境からイベントを受信したときに呼び出される関数: BREW イベントを処理する
/*protected virtual */Bool SFYApplication::HandleEvent(SFXEventConstRef event)
{
    // ここに BREW 環境から受信した各種イベントの分岐処理を記述する

    SFCError  error;
    Bool      result(false);

    // 配信エンジンを起動し、トレーサを使用してイベントを配信する
    // イベントを最初に受信するのはルートに関連付けられた SFYDistributer インスタンス
    // その後、トレーサの配信規則に基づいてルートを頂点とするレスポンダツリー内のレスポンダにイベントは配信される
    // ※ _root はルート(SFZRoot)
    if ((error = _root->Distribute(event, &result)) == SFERR_NO_ERROR) {

        if (result) { // ※ result 引数には、イベントの配信結果が格納されている

            if (IsRenderable()) { // 画面を再描画しても良い場合(優先的イベントハンドラが登録されていない場合)

                // 描画エンジンを起動し、画面を再描画する
                error = _root->Render();
            }
        }
    }
    if (error != SFERR_NO_ERROR) {

        // 配信エンジンや描画エンジンの起動時にメモリ不足などの致命的エラーが発生した場合、HandleError() を呼び出す
        if (HandleError(event, error)) {

            result = true;
        }
    }

    return result; // イベントを処理したときは true を返し, そうでないときは false を返す

}// SFYApplication::HandleEvent //

参照: SFCApplication::HandleEvent | SFYApplication::Distribute | SFYApplication::Render | SFCApplication::IsRenderable | SFCApplication::HandleError | ルート | SFZRoot | 配信エンジン | トレーサ | 描画エンジン

参照

SFCApplication::HandleEvent | SFCApplication::RegisterBypass | BREW イベント | イベント処理 | 配信エンジン | トレーサ | 描画エンジン


SFYApplication::HandleRender
アプリ開始時とレジューム時に呼び出される関数です(全画面を再描画します)。
[ protected, virtual ]
Bool HandleRender(
    SFXEventConstRef event   // イベント
);

戻り値

  • 全画面を再描画したとき: true
  • そうでないとき: false

解説

この関数は、 アプリ開始時とレジューム時に呼び出される関数です(全画面を再描画します)。

全画面を再描画した場合は true を返し、 そうでない場合は false を返します。

[Note] HandleRender 関数が呼び出されるタイミング

アプリ開始時とレジューム時は、 全画面の再描画が必要になります。

SFYApplication::HandleRender 関数は、 これらのタイミングで自動的に呼び出されます。

[Note] 優先的イベントハンドラ

SFXEventBypass クラスの解説を参照してください。

[Tip] 通常の描画処理

通常の描画処理は、SFYApplication::HandleRender 関数と関係有りません。 プログラムのどこに記述しても構いません。

デフォルトの実装は以下の通りです。

  1. 優先的イベントハンドラが登録されていなければ、 描画エンジンを起動して全画面を再描画します。
  2. 描画エンジンの起動中にメモリ不足などの致命的なエラーが発生した場合は、 SFCApplication::HandleError 関数を呼び出します。

詳細は、以下の内部実装のコードを参照してください。

開発者はこの関数をオーバーライドすることで独自の処理を記述できます。

内部実装

SFYApplication::HandleRender 関数の内部実装は以下の通りです

// アプリ開始時とレジューム時に呼び出される関数: 全画面を再描画する
/*protected virtual */Bool SFYApplication::HandleRender(SFXEventConstRef event)
{
    // ここにアプリ開始時とレジューム時の全画面の再描画処理を記述する

    SFCError  error;
    Bool      result(false);

    if (IsRenderable()) { // 画面が再描画可能なら(優先的イベントハンドラが登録されていないなら)

        // 全画面を再描画する: "Render(true)" なので可視領域を持つすべてのレスポンダの描画ハンドラが起動される 
        // ※ _root はルート(SFZRoot)
        if ((error = _root->Render(true)) == SFERR_NO_ERROR) {

            result = true;
        }

        // 描画エンジンの起動時にメモリ不足などの致命的エラーが発生した場合、HandleError() を呼び出す
        else if (HandleError(event, error)) {

            result = true;
        }
    }

    return result; // 全画面を再描画したときは true を返し, そうでないときは false を返す

}// SFYApplication::HandleRender //

参照: SFCApplication::IsRenderable | SFCApplication::HandleRender | SFYApplication::Render | SFCApplication::HandleError | SFZRoot | ルート | 描画エンジン

参照

SFCApplication::IsRenderable | SFCApplication::HandleRender | SFCApplication::HandleError | アプリ開始時とレジューム時の全画面描画処理


SFYApplication::Invalidate
指定された領域を再描画領域に登録します。
[ public ]
Void Invalidate(Void);
[ public ]
Void Invalidate(
    SFXRectangleConstRef param   // 設定する領域(デフォルト値: 何も指定しない場合、ルートの全領域)
);

解説

この関数は、 指定された領域(ルートのローカル領域の座標系で表した矩形)を再描画領域に登録します。

デフォルト値: param 引数に何も指定しない場合、ルートの全領域。

[Note] 注意

この操作は SFYApplication クラスが内部に保持しているルートに委譲されて処理されます。

[Note] 注意

詳細は、 SFYResponder::Invalidate 関数の解説を参照してください。

参照

SFYResponder::Invalidate | 実領域 | SFZRoot | ルート


SFYApplication::InvokeBackward
指定されたコールバック型イベントをルートに送信します(ハンドラは登録順に起動されます)。
[ public ]
Void InvokeBackward(
    SFXEventConstRef event   // イベント
    Bool overload            // 重複条件
    BoolPtr result = null    // 処理結果
);

解説

この関数は、 指定されたコールバック型イベントを SFYApplication クラスが内部に保持しているルートに送信します。

ハンドラは、 ルートのハンドラリストに登録された順に起動されます。

[Note] 注意

この操作は SFYApplication クラスが内部に保持している ルートに委譲されて処理されます。

[Note] 注意

詳細は、 SFYResponder::InvokeBackward 関数の解説を参照してください。

参照

SFYResponder::InvokeBackward | SFYApplication::InvokeForward | SFYApplication::Distribute | SFXEvent | SFZRoot | ルート | コールバック型 | イベント | ハンドラ | ハンドラリスト


SFYApplication::InvokeForward
指定されたコールバック型イベントをルートに送信します(ハンドラは登録の逆順に起動されます)。
[ public ]
Void InvokeForward(
    SFXEventConstRef event   // イベント
    Bool overload            // 重複条件
    BoolPtr result = null    // 処理結果
);

解説

この関数は、 指定されたコールバック型イベントを SFYApplication クラスが内部に保持しているルートに送信します。

ハンドラは、 ルートのハンドラリストに登録された逆順に起動されます。

[Note] 注意

この操作は SFYApplication クラスが内部に保持しているルートに委譲されて処理されます。

[Note] 注意

詳細は、 SFYResponder::InvokeForward 関数の解説を参照してください。

参照

SFYResponder::InvokeForward | SFYApplication::InvokeBackward | SFYApplication::Distribute | SFXEvent | SFZRoot | ルート | コールバック型 | イベント | ハンドラ | ハンドラリスト


SFYApplication::RegisterHandler
指定されたハンドラをルートに登録します。
[ 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                        // 配列の要素数
);

引数

range

ハンドラ規則が適用されるイベントの範囲を表します。

rule

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

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • range / rule / reference 引数が null であるとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、 指定されたハンドラSFYApplication クラスが内部に保持しているルートに登録します。

[Note] 注意

この操作は SFYApplication クラスが内部に保持しているルートに委譲されて処理されます。

[Note] 注意

詳細は、 SFYResponder::RegisterHandler 関数の解説を参照してください。

参照

SFYResponder::RegisterHandler | SFYApplication::UnregisterHandler | SFYApplication::ClearHandler | SFZRoot | ルート | ハンドラ


SFYApplication::RegisterTracer
指定された配信規則をルートのトレーサに登録します。
[ 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                        // 配列の要素数
);

引数

range

トレーサ規則が適用されるイベントの範囲を表します。

rule

配信順序と配信条件と重複条件のセットを表します。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • range / order / state / overload 引数が null であるとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、 指定された配信規則を SFYApplication クラスが内部に保持しているルートトレーサに登録します。

[Note] 注意

この操作は SFYApplication クラスが内部に保持しているルートに委譲されて処理されます。

[Note] 注意

詳細は、 SFYResponder::RegisterTracer 関数の解説を参照してください。

参照

SFYTracer::StateEnum | SFYTracer::OrderEnum | SFYTracer::RuleRec | SFYResponder::RegisterTracer | SFYApplication::UnregisterTracer | SFYApplication::ClearTracer | SFXEventRange | SFXEvent | SFYTracer | SFZRoot | ルート | トレーサ


SFYApplication::Render
ルート以下のレスポンダツリーを再描画します。
[ public ]
SFCError Render(
    Bool force = false   // 強制再描画
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • SFYRenderer インスタンスがルートに設定されていないとき: SFERR_INVALID_STATE
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、 SFYApplication クラスが内部に保持している ルート以下のレスポンダツリーを再描画します。

描画エンジンSFYRenderer インスタンス)がルートに設定されていない場合は、 SFERR_INVALID_STATE が返ります (デフォルトの設定では、 SFYApplication クラスが内部に保持しているルートに設定されているので、 このエラーは発生しません)。

[Note] 注意

この操作は SFYApplication クラスが内部に保持しているルートに委譲されて処理されます。

[Note] 注意

詳細は、 SFYResponder::Render 関数の解説を参照してください。

参照

SFYResponder::Render | SFZRoot | 描画エンジン | ルート


SFYApplication::SetRealBound
指定された領域をルートの実領域に設定します。
[ public ]
Void SetRealBound(
    SFXRectangleConstRef param   // 設定する値
);

解説

この関数は、 指定された領域を SFYApplication クラスが内部に保持しているルート実領域に設定します。

デフォルト値: SFXGraphics::GetDeviceRectangle 関数で得られる携帯電話の画面領域。

[Note] 注意

この操作は SFYApplication クラスが内部に保持しているルートに委譲されて処理されます。

[Note] アプリケーションクラスの実領域

アプリケーションクラスの実領域とは、 ルート(SFZRoot)のクリッピング領域のことです (ルートはこの領域でクリッピングされて描画されます)。 レスポンダ空間の左上端を原点 (0, 0) とする相対座標系の矩形領域として表されます。

SFYApplication::SFYApplication コンストラクタ内で、 この領域はレスポンダ空間と同じ領域 (SFXGraphics::GetDeviceRectangle 関数で得られる携帯電話の画面領域)に設定されます。

通常、デフォルトの設定で十分なので SFYApplication::SetRealBound 関数を利用する必要はありません。

[Note] 注意

詳細は、 SFYResponder::SetRealBound 関数の解説を参照してください。

参照

SFYResponder::SetRealBound | SFYApplication::GetRealBound | SFYApplication::SetVirtualBound | SFYApplication::SFYApplication | SFXGraphics::GetDeviceRectangle | SFXRectangle | SFZRoot | 実領域 | レスポンダ空間 | ルート


SFYApplication::SetVirtualBound
指定された領域をルートの仮想領域に設定します。
[ public ]
Void SetVirtualBound(
    SFXRectangleConstRef param   // 設定する値
);

解説

この関数は、 指定された領域を SFYApplication クラスが内部に保持しているルート仮想領域に設定します。

デフォルト値: SFXGraphics::GetDeviceRectangle 関数で得られる携帯電話の画面領域。

[Note] 注意

この操作は SFYApplication クラスが内部に保持しているルートに委譲されて処理されます。

[Note] アプリケーションクラスの仮想領域

アプリケーションクラスの仮想領域とは、 ルート(SFZRoot)の仮想領域のことです。

この領域は、 ルートの実領域と同じ領域 (SFXGraphics::GetDeviceRectangle 関数で得られる携帯電話の画面領域)に設定されます。

通常、デフォルトの設定で十分なので SFYApplication::SetVirtualBound 関数を利用する必要はありません。

[Note] 注意

詳細は、 SFYResponder::SetVirtualBound 関数の解説を参照してください。

参照

SFYResponder::SetVirtualBound | SFYApplication::GetVirtualBound | SFYApplication::SetRealBound | SFXGraphics::GetDeviceRectangle | SFXRectangle | SFZRoot | 仮想領域 | 実領域 | ルート


SFYApplication::UnregisterHandler
指定されたハンドラの登録を解除します。
[ 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                        // 配列の要素数
);

引数

range

ハンドラ規則が適用されるイベントの範囲を表します。

rule

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

解説

この関数は、 SFYApplication クラスが内部に保持しているルートから 指定されたハンドラの登録を解除します。

[Note] 注意

この操作は SFYApplication クラスが内部に保持しているルートに委譲されて処理されます。

[Note] 注意

詳細は、 SFYResponder::UnregisterHandler 関数の解説を参照してください。

参照

SFYResponder::UnregisterHandler | SFYApplication::RegisterHandler | SFYApplication::ClearHandler | SFXEventRange | SFZRoot | ルート | ハンドラ


SFYApplication::UnregisterTracer
ルートのトレーサから指定された配信規則の登録を解除します。
[ public ]
Void UnregisterTracer(
    SFXEventRangeConstRef range   // イベント範囲
);
[ public ]
Void UnregisterTracer(
    SFXEventRangeConstPtr range   // イベント範囲の配列
    SInt32 length                 // 配列の要素数
);

引数

range

トレーサ規則が適用されるイベントの範囲を表します。

解説

この関数は、 SFYApplication クラスが内部に保持しているルートトレーサから指定された配信規則の登録を解除します。

[Note] 注意

この操作は SFYApplication クラスが内部に保持しているルートに委譲されて処理されます。

[Note] 注意

詳細は、 SFYResponder::UnregisterTracer 関数の解説を参照してください。

参照

SFYResponder::UnregisterTracer | SFYApplication::RegisterTracer | SFYApplication::ClearTracer | SFXEvent | SFXEventRange | SFZRoot | ルート | トレーサ