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

継承図

SFYApplication クラスの継承図

協調図

SFYApplication クラスの協調図

解説

■ 仕様と使い方

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

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

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

■□■ SFY アプリの全体的な処理の流れ ■□■

□ アプリの起動

SFY アプリの起動は、 SFC アプリと同様にブートローダ (SFCApplet::Boot 関数)によって行います。

[Note] 注意

SFCApplet::Boot 関数はアプリで最初に実行される関数です。

ブートローダーにより、 ファクトリ関数(helloworld::Factory 関数)が実行され、 アプリケーションクラスのインスタンスが作成されます。

これ以降、SFCApplication::Terminate 関数の呼び出し、 または電源キー(AVK_POWER)/クリアキー(AVK_CLR)の押下などによりアプリが終了するまで、 アプリは実行中であり、必要に応じて BREW イベントを処理します。

ブートローダ(SFCApplet::Boot 関数)とファクトリ関数(helloworld::Factory 関数)は、 以下のように実装します。

ブートローダ(SFCApplet::Boot 関数)には、ライセンスコードを設定し、 引数 id が AEECLSID_HELLOWORLD であるときに helloworld アプリケーションクラスのインスタンスファクトリ関数 (helloworld::Factory 関数)を返す処理を記述します。

ファクトリ関数(helloworld::Factory 関数)には、 helloworld アプリケーションクラスのインスタンスを生成する処理を記述します。

[Tip] Tip

アプリケーションクラスのインスタンスは、 1 アプリにつき 1 つだけ生成します。

[Note] ClassID とライセンスコード

BREW 実機(BREW 移動機)では、 アプリの ClassID に対応した正規ライセンスコードを設定しなければアプリは起動しません。

開発時は Example / Tutorial フォルダ内にあるサンプルアプリの ClassID とライセンスコードをテスト用に使用してください

BREW シミュレータでは、ライセンスコードを設定しなくてもアプリは起動します。

参照: ライセンスコード

例 863. ブートローダとファクトリ関数

// 
//  helloworld.cpp
//

#include "helloworld.hpp"

// ブートローダ
SFCApplet::FactorySPP SFCApplet::Boot(AEECLSID id, SFXAnsiStringPtr license)
{
    // 実行ライセンスコードを設定する(実機の場合は必須。シミュレーターでは省略可)
    *license = "heap://"
               "TIXDRQXNU5WHU8Y3Z9WOHWQR6Z3VPSDHDV5CR1S4XASPWLUHWAS7Z5Z2TGS3XMSAT3UPUQTLTARCYPSF"
               "UEJZ6ROSJWGUQSEYKR6V2U4VESMTQLHKZ6X7Y2VKXHWIX3XBU0Z7VHWHXIZBSGT5SPU3XLX0Z1Y4R3TC"
               "U6WGT9WHWIVNYHYCUCR9T3SMTEWPRNVAX1Y4VPW2YCY9YQV5R7Z9UIVHT6SDUPU2SIW6VCRCWBR2S4WQ"
               "UPYFWCYGT4VIT1WHXGYPTQSFYPWNV3ULRNWFW7RBRFVKUKS2YQSQYHW1TPUPXBZ6UEY2WOYKR7S3TAU4"
               "TQS6UHVFVEVLU3R5SDSKW7RPTNTPVQU2T4R8Z4VLUGEW3U98TLDR8/";

    return (id == AEECLSID_HELLOWORLD) ? (&helloworld::Factory) : (null);
}

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

□ イベントループ

SFY アプリでは、 アプリ起動後(アプリケーションクラスのインスタンス生成後)、 BREW 環境からイベント(BREW イベント)を受信すると、 SFCApplication::Invoke 関数が呼び出されて以下の処理を行います (参照: SFCApplication::Invoke 関数の内部実装)。

  1. (登録されていれば)優先的イベントハンドラを呼び出します。
  2. SFEVT_APP_START / SFEVT_APP_RESUME イベントを受信したとき、 または優先的イベントハンドラが終了するとき、 優先的イベントハンドラが登録されていなければ、 SFYApplication::HandleRender 関数を呼び出して全画面 (デバイス画面とルート以下のレスポンダツリー)の再描画を行います。
  3. SFEVT_APP_START / SFEVT_APP_RESUME / SFEVT_APP_STOP / SFEVT_APP_SUSPEND イベントを受信したとき、 あるいは優先的イベントハンドラがイベントを処理しなかったとき、 SFYApplication::HandleEvent 関数を呼び出してイベント処理を行います。
  4. メモリ不足などの致命的エラーが発生したときは、 SFCApplication::HandleError 関数を呼び出してエラー処理を行います。
[Note] 優先的イベントハンドラについて

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

例 864. SFCApplication::Invoke 関数の内部実装

/*private */Bool SFCApplication::Invoke(SFXEventConstRef event)
{
    Bool    overload(false); // イベントを重複して処理するかどうかを表すフラグ
    Bool    render(false);   // 全画面を再描画するかどうかを表すフラグ
    Bool    result(false);   // 処理がなされた場合、"true" が設定される

    switch (event.GetType()) {

        case SFEVT_APP_START:
        case SFEVT_APP_RESUME:
            // SFEVT_APP_START / SFEVT_APP_RESUME の場合

            render = true;   // 全画面を再描画する

        case SFEVT_APP_STOP:
        case SFEVT_APP_SUSPEND:
            // SFEVT_APP_START / SFEVT_APP_RESUME / SFEVT_APP_STOP / SFEVT_APP_SUSPEND の場合

            overload = true; // イベントを重複して処理する
            result = true;   // BREW の仕様では、これらのイベントには true を返す必要がある
            break;

        default:

            break;
    }

    if (_bypass != null) {   // 優先的イベントハンドラの処理

        // 優先的イベントハンドラを呼び出す
        result = (*_bypass)(event, _reference);
    }

    if (render) {  // アプリ開始/再開時と優先的イベントハンドラ終了時の全画面再描画

        if (IsRenderable()) {  // 優先的イベントハンドラが登録されていない場合

            // 全画面を再描画する
            HandleRender(event);
        }
    }

    if (!result || overload) {  
        // 優先的イベントハンドラで処理されなかったイベント、あるいは
        // SFEVT_APP_START / SFEVT_APP_RESUME / SFEVT_APP_STOP / SFEVT_APP_SUSPEND イベントの処理

        // イベントを処理する
        result = HandleEvent(event) || overload;
    }
    return result;
}// SFCApplication::Invoke //
[Caution] 注意

HandleEvent / HandleRender 関数については、 SFYApplication クラスにて上書き実装した、 SFYApplication::HandleEvent / SFYApplication::HandleRender 関数が呼び出されます。

[Note] 注意

SFEVT_APP_START / SFEVT_APP_RESUME / SFEVT_APP_STOP / SFEVT_APP_SUSPEND イベントを受信したとき、 必ず true を返す処理をしていることに注意してください。

SFYApplication::HandleEvent 関数は、 BREW イベントルート以下のレスポンダツリーに配信し、 必要に応じてルート以下のレスポンダツリーを再描画します (参照: イベント処理 / 描画処理)。

SFYApplication::HandleRender 関数は、 アプリ開始/再開時と優先的イベントハンドラ終了時に全画面(デバイス画面とルート以下のレスポンダツリー)を再描画します (参照: アプリ開始/再開時と優先的イベントハンドラ終了時の全画面再描画)。

SFYApplication::HandleEvent / SFYApplication::HandleRender / SFCApplication::HandleError 仮想関数のデフォルトの実装は、各関数の内部実装コードを参照してください。

これらの仮想関数は、アプリの処理内容に応じてユーザー定義アプリケーションクラスにて上書きしますが、 通常はデフォルトの実装で十分です。

□ アプリの終了

アプリを終了するには、 SFCApplication::Terminate 関数を呼び出します。

SFCApplication::Terminate 関数を呼び出すと、 内部的に BREW API ISHELL_CloseApplet 関数が呼び出されます。 そのとき、アプリは SFEVT_APP_STOP イベントを受信し、 アプリケーションクラスのデストラクタを実行した後アプリケーションクラスのインスタンスは解放され、 アプリは終了します。

SFYApplication::~SFYApplication デストラクタは、 テキスト入力コントロールエディタ、 レスポンダツリー描画エンジン配信エンジンを終了し、 リソースをすべて解放します。

SFCApplication::~SFCApplication デストラクタは、 アプリが BREW イベントを処理しない設定にします。

利用者が電源キー(AVK_POWER)を押下した場合、 もしくはクリアキー(AVK_CLR)を押下時にアプリが AEE に false を返した場合、 SFCApplication::Terminate 関数呼び出しと同等の処理が自動的に行われてアプリは終了します。

[Note] 注意

クリアキー(AVK_CLR)の SFEVT_KEY イベントはアプリ側で処理できますが、 電源キー(AVK_POWER)の SFEVT_KEY イベントはアプリ側では処理できません。

[Note] 注意

SFCApplication::Terminate 関数は、 レスポンダを破棄するための SFYResponder::Terminate 関数とは処理内容が異なります。

参照: SFC アプリの全体的な処理の流れ

■階層構造

SFYApplication クラスは、 ウィンドウダイアログメニューコントロールフレームなどのレスポンダから階層的に構成される、 レスポンダツリールートレスポンダとして、 デフォルトのルートSFZRoot)を 1 つ保持します。

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

ウィンドウ、ダイアログ、メニューは同一階層に存在します。

コンテナはコントロールや 他のコンテナ(コンテナのみ)を管理したり、 コントロールや他のコンテナ(コンテナ・ウィンドウ・ダイアログ)に管理されることが可能な変則的な設計になっています。

[Important] フレーム

タイトルや余白、枠線を備えたフレームをウィンドウやダイアログ、 メニューに装着することが可能です。

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

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

SFYApplication::SFYApplication コンストラクタの処理により、 SFYApplication クラスが内部で保持するルートSFZRoot)には、 初期化された配信エンジン描画エンジンが自動的に関連付けれらます。

その結果、ルートを頂点とするレスポンダツリーを構築するだけで、 レスポンダツリーへのイベント配信と各レスポンダの再描画は自動的に行われます。

SFYApplication クラスを継承するアプリケーションクラスに対するレスポンダ操作は、 すべてルートに委譲されて実行されます。

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

■仮想関数

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

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

仮想関数名 デフォルトの動作 オーバーライド
SFYApplication::HandleEvent イベントを配信し、ルート以下のレスポンダツリーを再描画する※1 任意
SFYApplication::HandleRender 全画面(デバイス画面とルート以下のレスポンダツリー)を再描画する※1 任意
SFCApplication::HandleError - 任意
[Note] 注釈

※1. メモリ不足などの致命的なエラーが発生した場合は SFCApplication::HandleError 関数を起動します。

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

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

例 865. 宣言

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

例 866. 実装

// ブートローダ : 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 )
指定されたコールバック型イベントをルートに送信します(ハンドラは登録の逆順に起動されます)。
Bool IsRendererIntermissive( Void )
サスペンド時に描画エンジンを終了させるかどうかを判定します。
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 SetRendererIntermissive( Bool 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 IsHandlingEvent( Void ) (SFCApplication から継承)
イベント処理中かどうかを判定します。
Bool IsRenderable( Void ) (SFCApplication から継承)
画面の描画が可能かどうかを判定します。
SFCError RegisterBypass( CallbackSPP spp , VoidPtr reference ) (SFCApplication から継承)
イベントを優先的に処理するためのコールバックを登録します。
Bool RenderDeviceScreen( Void ) (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. サスペンド時に描画エンジンを終了させない設定にする(サスペンド時はデバイス画面保存用ビットマップを解放しない)
  2. SFYApplication クラスがデフォルトで保持するテキスト入力コントロールエディタを作成する
  3. SFYApplication クラスがデフォルトで保持するルートを作成する
  4. 配信エンジンを初期化する
  5. 描画エンジンを初期化する
  6. ルートに配信エンジンと描画エンジンを関連付ける
  7. ルートの実領域レスポンダ空間に設定する
  8. ルートの状態を「可視+活性+操作可能+フォーカス」にまとめて設定する

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

内部実装

このコンストラクタの内部実装は以下の通りです。

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

    SFMSEALCOPY(SFYApplication)

    private:
                SFYDistributer   _distributer;  // 配信エンジン
                SFYRenderer      _renderer;     // 描画エンジン
                SFZRootSmp       _root;         // ルート
                SFXBaseEditorPtr _editor;       // テキスト入力コントロールエディタ
                Bool             _intermissive; // サスペンド時のデバイス画面保存用ビットマップ解放フラグ

    public:

    ...

};

// SFYApplication クラスのコンストラクタの実装
/*protected */SFYApplication::SFYApplication(Void) : _editor(null), _intermissive(false) 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), _intermissive(false) 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()) == 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 //

参照

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


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

解説

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

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

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

内部実装

このデストラクタの内部実装は以下の通りです。

// 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] グローバル変数

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

使用例

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

//
//  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 を返してイベントを処理した場合、 または、SFEVT_APP_START(アプリ開始イベント)/ SFEVT_APP_RESUME(アプリ再開イベント)を受信した場合、 優先的イベントハンドラが登録されていなければ、 描画エンジンを起動して ルート以下のレスポンダツリーの再描画を行います。
    [Note] 注意

    SFEVT_APP_END(アプリ終了イベント)/ SFEVT_APP_SUSPEND(アプリ中断イベント)を受信した場合や、 優先的イベントハンドラが登録されている場合、描画エンジンは起動されません。

  4. 配信エンジンや描画エンジンの起動中にメモリ不足などの致命的なエラーが発生した場合は、 SFCApplication::HandleError 関数を呼び出します。
  5. サスペンド時に描画エンジン内部のデバイス画面保存用ビットマップを解放する場合は、 描画エンジンを終了します(描画エンジンの再初期化は自動的に行われます)。

[Note] 優先的イベントハンドラについて

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

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

内部実装

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

// アプリが BREW 環境からイベントを受信したときに呼び出される関数
/*protected virtual */Bool SFYApplication::HandleEvent(SFXEventConstRef event)
{
    SFCError  error;
    Bool      result(false);

    // 配信エンジンを起動してイベントを配信する
    // ※ イベントは最初にルートに関連付けられた SFYDistributer インスタンスに配信される
    //    その後、トレーサの配信規則に基づいてルート以下のレスポンダツリーに配信される
    if ((error = _root->Distribute(event, &result)) == SFERR_NO_ERROR) {
        // (_root はルート、result 引数にはイベントの処理結果が格納される)

        if (event.GetType() != SFEVT_APP_STOP && event.GetType() != SFEVT_APP_SUSPEND)) {  
            // 再描画が必要な場合

            if (IsRenderable()) {  // 優先的イベントハンドラが登録されていない場合

                // 描画エンジンを起動してルート以下のレスポンダツリーを再描画する
                error = _root->Render();
            }
        }
    }
    if (error != SFERR_NO_ERROR) {
        // 配信エンジンや描画エンジンの起動時にメモリ不足などの致命的エラーが発生した場合

        if (HandleError(event, error)) {

            result = true;
        }
    }
    if ((event.GetType() == SFEVT_APP_SUSPEND) && IsRendererIntermissive()) {
        // サスペンド時に描画エンジン内部のデバイス画面保存用ビットマップを解放する場合

        // 描画エンジンを終了する
        _renderer.Terminate();
    }
    return result; // イベントを処理したときは true を返し, そうでないときは false を返す
}// SFYApplication::HandleEvent //

参照: SFCApplication::HandleEvent | SFCApplication::IsRenderable | SFCApplication::HandleError | SFYApplication::IsRendererIntermissive | SFYResponder::Distribute | SFYResponder::Render | SFYRenderer::Initialize | SFYRenderer::Terminate | SFZRoot | ルート | トレーサ | 配信エンジン | 描画エンジン | 描画イベント | 描画ハンドラ | イベントループ | 可視領域 | 再描画領域

参照

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


SFYApplication::HandleRender
アプリ開始/再開時と優先的イベントハンドラ終了時に呼び出される関数です(全画面を再描画します)。
[ protected, virtual ]
Bool HandleRender(
    SFXEventConstRef event   // イベント
);

戻り値

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

解説

この関数は、 アプリ開始/再開時と優先的イベントハンドラ終了時に呼び出される関数です(全画面を再描画します)。

優先的イベントハンドラが実行中の場合、この関数は呼び出されません。

全画面(デバイス画面と ルート以下のレスポンダツリー)の再描画を行います。

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

[Note] 優先的イベントハンドラについて

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

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

アプリ開始/再開時と優先的イベントハンドラ終了時は、 全画面の再描画が必要になります。 HandleRender 関数は、これらのタイミングで呼び出されます。

アプリ開始/再開時は SFCApplication::Invoke 関数内から、 優先的イベントハンドラ終了時は SFCApplication::RenderDeviceScreen 関数内から自動的に呼び出されます。

HandleEvent 関数よりも先に呼び出されることに注意してください

※ 詳細は、SFYApplication クラスの解説にある 「SFY アプリの全体的な処理の流れ」のコードを参照してください。

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

  1. SFCApplication::HandleRender 関数を呼び出してデバイス画面を再描画します。
  2. デバイス画面保存用ビットマップが利用可能であれば、 SFYResponder::Recover 関数を呼び出して そのビットマップから前回再描画時の画面を復元します。
  3. 描画エンジンを起動してレスポンダツリーを再描画します (デバイス画面保存用ビットマップが利用できる場合は、 再描画領域に登録された 可視領域を持つ レスポンダの描画ハンドラだけが呼び出されます。 そうでない場合は、ルート以下の可視領域を持つすべてのレスポンダの描画ハンドラが呼び出されます)。
  4. 描画エンジンの起動中にメモリ不足などの致命的なエラーが発生した場合は、 SFCApplication::HandleError 関数を呼び出します。

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

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

内部実装

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

// アプリ開始/再開時と優先的イベントハンドラ終了時に呼び出される仮想関数
/*protected virtual */Bool SFYApplication::HandleRender(SFXEventConstRef event)
{
    // ここに全画面(デバイス画面とルート以下のレスポンダツリー)の再描画を記述する
    SFCError  error;
    Bool      result(false);

    if (SFCApplication::HandleRender(event)) { // デバイス画面を再描画する

        // ルート以下のレスポンダツリーを再描画する
        // ※1. 可能であれば、デバイス画面保存用ビットマップを利用して高速に再描画行う
        // ※2. SFEVT_APP_START 受信時などデバイス画面保存用ビットマップが利用不可の場合は引数に true を指定して Render 関数を呼び出す(強制再描画を行う)
        error = _root->Render((event.GetType() == SFEVT_APP_START) || (_root->Recover() != SFERR_NO_ERROR));

        if (error == SFERR_NO_ERROR) {

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

参照: SFCApplication::HandleRender | SFCApplication::HandleError | SFCApplication::RenderDeviceScreen | SFYResponder::Render | SFYResponder::Recover | SFZRoot | ルート | 描画エンジン

参照

SFCApplication::HandleRender | SFCApplication::HandleError | SFCApplication::RenderDeviceScreen | アプリ開始/再開時と優先的イベントハンドラ終了時の全画面再描画


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::IsRendererIntermissive
サスペンド時に描画エンジンを終了させるかどうかを判定します。
[ public, const ]
Bool IsRendererIntermissive(Void);

Return value

  • サスペンド時に描画エンジンを終了させるとき: true
  • そうでないとき: false

解説

この関数は、 サスペンド時に描画エンジンを終了させるかどうかを判定します。

[Note] 注意

サスペンド時に描画エンジンを終了させてデバイス画面保存用ビットマップなどのリソースを解放したい場合、 param 引数に true を指定します。

この場合、SFEVT_APP_RESUME イベントを受信したときに SFYRenderer::Terminate 関数が呼び出されます。

レジューム後、 SFYResponder::Render 関数を呼び出して再描画するときに描画エンジンが終了している場合は、 自動的に SFYRenderer::Initialize 関数が呼び出されて、 描画エンジンは初期化されます。

詳細は、SFYApplication::HandleEvent 関数の内部実装コードを参照してください。

参照

SFYApplication::SetRendererIntermissive | SFYApplication::HandleEvent | 描画エンジン


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] アプリケーションクラスの実領域

アプリケーションクラスの実領域とは、 SFYApplication クラスが内部で保持するルート[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::SetRendererIntermissive
サスペンド時に描画エンジンを終了させるかを設定します。
[ public ]
Void SetRendererIntermissive(
    Bool param   // 設定する値: サスペンド時に描画エンジンを終了させる場合は true、そうでない場合は false
);

解説

この関数は、 サスペンド時に描画エンジンを終了させるかを設定します。

デフォルト値: false(サスペンド時に描画エンジンは終了しません)。

[Note] 注意

サスペンド時に描画エンジンを終了させてデバイス画面保存用ビットマップなどのリソースを解放したい場合、 param 引数に true を指定します。

この場合、SFEVT_APP_RESUME イベントを受信したときに SFYRenderer::Terminate 関数が呼び出されます。

レジューム後、 SFYResponder::Render 関数を呼び出して再描画するときに描画エンジンが終了している場合は、 自動的に SFYRenderer::Initialize 関数が呼び出されて、 描画エンジンは初期化されます。

詳細は、SFYApplication::HandleEvent 関数の内部実装コードを参照してください。

参照

SFYApplication::SFYApplication | SFYApplication::IsRendererIntermissive | SFYApplication::HandleEvent | SFYResponder::Render | SFYRenderer::Initialize | SFYRenderer::Terminate | SFYRenderer | 描画エンジン


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

解説

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

デフォルト値: SFXGraphics::GetDeviceRectangle 関数で得られるデバイス画面領域。

[Note] 注意

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

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

アプリケーションクラスの仮想領域とは、 SFYApplication クラスが内部で保持するルート[SFZRoot] の仮想領域のことです。

SFYApplication::SFYApplication コンストラクタの処理により、 デフォルトでは、 ルートの実領域と同じ領域 (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 | ルート | トレーサ