前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework UNIVERSE 5.0
SFYApplication
レスポンダシステムを利用するアプレットのアプリケーションクラスの雛型です。
#include <SFYApplication.h.hpp>
class SFYApplication : public SFCApplication;
SFMTYPEDEFCLASS(SFYApplication)

継承図

SFYApplication クラスの継承図

協調図

SFYApplication クラスの協調図

解説

SFY アプレットでは、アプレットに付き SFYApplication クラスを継承したアプリケーションクラスを 1 つ用意します。 アプリケーションクラスは、SFY アプレットで最初に作成され、最後に破棄され、アプレット全体の制御の中核となります。

SFYApplication クラスを継承したアプリケーションクラスは、 ウィンドウやダイアログ、メニュー、コントロールなどを管理する起点となります。

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

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

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

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

アプレットのグラフィカル ユーザーインターフェース(GUI)は、このルート(SFZRoot)を頂点とするレスポンダツリーを構成することにより実現されます。

アプリケーションクラスに関するレスポンダ操作はルート(SFZRoot)に委譲されて行われます。

※明示的に新しいレスポンダツリーを構築することで複数のルートを含むこともできますが、 通常、デフォルトのルート(SFZRoot)を使用してアプレット開発します。詳しくは ルートを参照してください。

参照

アプリケーションクラス(基礎編) | レスポンダツリー | ルートレスポンダ | ルート | SFZRoot

メンバ

コンストラクタ/デストラクタ
SFYApplication( Void )
SFYApplication クラスのコンストラクタです。
~SFYApplication( Void )
SFYApplication クラスのデストラクタです。
パブリック関数
Void ClearHandler( Void )
すべてのハンドラの登録を解除します。
Void ClearTracer( Void )
すべてのトレーサの登録を解除します。
SFCError Distribute( SFXEventConstRef event , BoolPtr result = null )
配信エンジンを起動してイベントを配信します。
SFYResponderSmp GetChildBack( Void )
GetChildBack( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus )
GetChildBack( UInt32 id )
GetChildBack( Bool visible , Bool active , Bool enable , Bool focus )
最背面に位置する子レスポンダを取得します。
SFYResponderSmp GetChildBackward( SInt32 index )
GetChildBackward( SInt32 index , UInt32 id , Bool visible , Bool active , Bool enable , Bool focus )
GetChildBackward( SInt32 index , UInt32 id )
GetChildBackward( SInt32 index , Bool visible , Bool active , Bool enable , Bool focus )
背面から数えて指定された順番に位置する子レスポンダを取得します。
SInt32 GetChildCount( Void )
GetChildCount( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus )
GetChildCount( UInt32 id )
GetChildCount( Bool visible , Bool active , Bool enable , Bool focus )
子レスポンダの数を取得します。
SFYResponderSmp GetChildForward( SInt32 index )
GetChildForward( SInt32 index , UInt32 id , Bool visible , Bool active , Bool enable , Bool focus )
GetChildForward( SInt32 index , UInt32 id )
GetChildForward( SInt32 index , Bool visible , Bool active , Bool enable , Bool focus )
前面から数えて指定された順番に位置する子レスポンダを取得します。
SFYResponderSmp GetChildFront( Void )
GetChildFront( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus )
GetChildFront( UInt32 id )
GetChildFront( Bool visible , Bool active , Bool enable , Bool focus )
最前面に位置する子レスポンダを取得します。
static
SFYDistributerPtr
GetDistributer( Void )
配信エンジンを取得します。
SFXRectangle GetGlobalBound( Void )
グローバル領域を取得します。
static
SFYApplicationPtr
GetInstance( Void )
アプリケーションクラスのインスタンスを取得します。
SFXRectangle GetLocalBound( Void )
ローカル領域を取得します。
SFXRectangleConstRef GetRealBound( Void )
実領域を取得します。
static
SFYRendererPtr
GetRenderer( Void )
描画エンジンを取得します。
static
SFYResponderSmp
GetRoot( Void )
ルートレスポンダを取得します。
SFXRectangle GetSuitableBound( Void )
GetSuitableBound( SFXRectangleConstRef param )
最適な大きさを取得します。
SFXRectangleConstRef GetVirtualBound( Void )
仮想領域を取得します。
Void Invalidate( 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 )
RegisterHandler( SFXEventRangeConstPtr range , SFYHandler::HandlerSPPConstPtr spp , VoidPtrConstPtr reference , SInt32 length )
RegisterHandler( SFXEventRangeConstPtr range , SFYHandler::RuleRecConstPtr rule , SInt32 length )
RegisterHandler( SFXEventRangeConstRef range , SFYHandler::HandlerSPP spp , VoidPtr reference )
ハンドラを登録します。
SFCError RegisterTracer( SFXEventRangeConstRef range , SFYTracer::RuleRecConstRef rule )
RegisterTracer( SFXEventRangeConstPtr range , SFYTracer::OrderEnumConstPtr order , SFYTracer::StateEnumConstPtr state , BoolConstPtr overload , SInt32 length )
RegisterTracer( SFXEventRangeConstPtr range , SFYTracer::RuleRecConstPtr rule , SInt32 length )
RegisterTracer( SFXEventRangeConstRef range , SFYTracer::OrderEnum order , SFYTracer::StateEnum state , Bool overload )
トレーサを登録します。
SFCError Render( Bool force = false )
描画エンジンを起動して再描画します。
Void SetRealBound( SFXRectangleConstRef param )
実領域を設定します。
Void SetVirtualBound( SFXRectangleConstRef param )
仮想領域を設定します。
Void UnregisterHandler( SFXEventRangeConstRef range , SFYHandler::RuleRecConstRef rule )
UnregisterHandler( SFXEventRangeConstPtr range , SFYHandler::HandlerSPPConstPtr spp , VoidPtrConstPtr reference , SInt32 length )
UnregisterHandler( SFXEventRangeConstPtr range , SFYHandler::RuleRecConstPtr rule , SInt32 length )
UnregisterHandler( SFXEventRangeConstRef range , SFYHandler::HandlerSPP spp , VoidPtr reference )
ハンドラの登録を解除します。
Void UnregisterTracer( SFXEventRangeConstRef range )
UnregisterTracer( SFXEventRangeConstPtr range , SInt32 length )
トレーサの登録を解除します。
static
AEECLSID
GetClassID( Void ) (SFCApplication から継承)
アプレットの ClassID を取得します。
Bool Invoke( SFXEventConstRef event ) (SFCApplication から継承)
[非推奨 API ( 廃止予定 API )]イベントを送信します。
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 )
アプリケーションクラスが保持しているルートを取得します。
Bool HandleEvent( SFXEventConstRef event )
イベントを処理し、アプレットの画面全体を再描画します。
Bool HandleRender( SFXEventConstRef event )
アプレットの画面全体を再描画します。
Bool HandleError( SFXEventConstRef event , SFCError error ) (SFCApplication から継承)
致命的なエラーが発生した場合に呼び出される仮想関数です。

SFYApplication::SFYApplication
SFYApplication クラスのコンストラクタです。
[ protected, explicit ]
SFYApplication(Void);

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

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

解説

アプリケーションクラスがデフォルトで保持しているルート(SFZRoot)に登録されたハンドラをすべて解除します。

[Note] 注意
この操作はアプリケーションクラスがデフォルトで保持しているルート(SFZRoot)に委譲されて処理されます。

参照

SFZRoot | レスポンダツリー | ルートレスポンダ | ハンドラ | SFYApplication::RegisterHandler | SFYApplication::UnregisterHandler | SFXEventRange


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

解説

アプリケーションクラスがデフォルトで保持しているルート(SFZRoot)のトレーサに登録されている配信規則をすべて解除します。

[Note] 注意
この操作はアプリケーションクラスがデフォルトで保持しているルート(SFZRoot)に委譲されて処理されます。

参照

SFZRoot | レスポンダツリー | ルートレスポンダ | トレーサ | SFYApplication::RegisterTracer | SFYApplication::UnregisterTracer | SFXEventRange


SFYApplication::Distribute
配信エンジンを起動してイベントを配信します。
[ public ]
SFCError Distribute(
    SFXEventConstRef event   // イベント
    BoolPtr result = null    // 処理結果
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • 不正な状態のとき : SFERR_INVALID_STATE
  • メモリ不足のとき : SFERR_NO_MEMORY
  • 失敗したとき : SFERR_FAILED

解説

Distribute() 関数は、 配信エンジンを起動し、 トレーサに登録された規則に従ってBREW 定義イベントやユーザー定義イベントをレスポンダに配信します。

BREW 定義イベントを配信するとき、 イベントループの最初に Distribute() 関数が自動的に呼び出されるので、 明示的に Distribute() 関数を呼び出す必要はありません。

ユーザー定義イベントの場合は、明示的に Distribute() 関数を呼び出す必要があります。

[Important] 重要項目
InvokeForward()/InvokeBackward() 関数と異なり、 Distribute() 関数を利用して送信されたイベントは、 トレーサに登録された規則によっては送信先レスポンダの子レスポンダに配信されることがあります。

参照

SFYApplication::InvokeForward | SFYApplication::InvokeBackward | SFYResponder::Distribute | SFYResponder::InvokeForward | SFYResponder::InvokeBackward | 配信エンジン | 配信型 | イベント | BREW 定義イベント | イベントループ | トレーサ | ハンドラ | ハンドラリスト | 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 を返します。

解説

アプリケーションクラスがデフォルトで保持しているルート(SFZRoot)について、 最背面に位置する子レスポンダを取得します。

[Note] 注意
この操作はアプリケーションクラスがデフォルトで保持しているルート(SFZRoot)に委譲されて処理されます。

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

初期化されていない子レスポンダは検索に含まれません。

使用例

すべての子レスポンダの中で最背面のレスポンダを取得する方法

SFYResponderSmp child;

child = GetChildBack();

ID = 128 の子レスポンダの中で最背面のレスポンダを取得する方法

SFYResponderSmp child;

child = GetChildBack(128);

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

SFYResponderSmp child;

child = GetChildBack(true, true, false, false);

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

SFYResponderSmp child;

child = GetChildBack(true, true, true, false);

参照

SFZRoot | レスポンダツリー | ルートレスポンダ | SFYApplication::GetChildFront | SFYApplication::GetChildBackward | SFYResponder::Initialize | 状態 | 子レスポンダ


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 を返します。

解説

アプリケーションクラスがデフォルトで保持しているルート(SFZRoot)について、 背面から数えて指定された順番に位置する子レスポンダを取得します。

[Note] 注意
この操作はアプリケーションクラスがデフォルトで保持しているルート(SFZRoot)に委譲されて処理されます。

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

初期化されていない子レスポンダは検索に含まれません。

使用例

すべての子レスポンダの中で背面から 3 番目のレスポンダを取得する方法

SFYResponderSmp child;

child = GetChildBackward(2);

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

SFYResponderSmp child;

child = GetChildBackward(2, 128);

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

SFYResponderSmp child;

child = GetChildBackward(2, true, true, false, false);

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

SFYResponderSmp child;

child = GetChildBackward(2, true, true, true, false);

参照

SFZRoot | レスポンダツリー | ルートレスポンダ | SFYApplication::GetChildForward | SFYApplication::GetChildBack | SFYResponder::Initialize | 状態 | 子レスポンダ


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     // フォーカス条件
);

戻り値

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

解説

アプリケーションクラスがデフォルトで保持しているルート(SFZRoot)について、 子レスポンダの数を取得します。

[Note] 注意
この操作はアプリケーションクラスがデフォルトで保持しているルート(SFZRoot)に委譲されて処理されます。

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

初期化されていない子レスポンダは検索に含まれません。

使用例

すべての子レスポンダの数を取得する方法

SInt32 count;

count = GetChildCount();

ID = 128 の子レスポンダの数を取得する方法

SInt32 count;

count = GetChildCount(128);

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

SInt32 count;

count = GetChildCount(true, true, false, false);

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

SInt32 count;

count = GetChildCount(true, true, true, false);

参照

SFZRoot | レスポンダツリー | ルートレスポンダ| SFYResponder::Initialize | 状態 | 子レスポンダ


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 を返します。

解説

アプリケーションクラスがデフォルトで保持しているルート(SFZRoot)について、 前面から数えて指定された順番に位置する子レスポンダを取得します。

[Note] 注意
この操作はアプリケーションクラスがデフォルトで保持しているルート(SFZRoot)に委譲されて処理されます。

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

初期化されていない子レスポンダは検索に含まれません。

使用例

すべての子レスポンダの中で前面から 3 番目のレスポンダを取得する方法

SFYResponderSmp child;

child = GetChildForward(2);

ID = 128 の子レスポンダの中で前面から 3 番目のレスポンダを取得する方法

SFYResponderSmp child;

child = GetChildForward(2, 128);

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

SFYResponderSmp child;

child = GetChildForward(2, true, true, false, false);

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

SFYResponderSmp child;

child = GetChildForward(2, true, true, true, false);

参照

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


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 を返します。

解説

アプリケーションクラスがデフォルトで保持しているルート(SFZRoot)について、 最前面に位置する子レスポンダを取得します。

[Note] 注意
この操作はアプリケーションクラスがデフォルトで保持しているルート(SFZRoot)に委譲されて処理されます。

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

初期化されていない子レスポンダは検索に含まれません。

使用例

すべての子レスポンダの中で最前面のレスポンダを取得する方法

SFYResponderSmp child;

child = GetChildFront();

ID = 128 の子レスポンダの中で最前面のレスポンダを取得する方法

SFYResponderSmp child;

child = GetChildFront(128);

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

SFYResponderSmp child;

child = GetChildFront(true, true, false, false);

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

SFYResponderSmp child;

child = GetChildFront(true, true, true, false);

参照

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


SFYApplication::GetDistributer
配信エンジンを取得します。
[ public, static ]
SFYDistributerPtr GetDistributer(Void);

戻り値

アプリケーションクラスがデフォルトで保持するルート(SFZRoot)に設定された配信エンジン。

設定されていない場合、null が返ります。

解説

アプリケーションクラスがデフォルトで保持するルート(SFZRoot)にに設定されている配信エンジンを取得します。

[Note] 注意
この操作はアプリケーションクラスがデフォルトで保持しているルート(SFZRoot)に委譲されて処理されます。

参照

配信エンジン | SFYResponder::SetDistributer | SFZRoot | ルート | レスポンダツリー | ルートレスポンダ


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

戻り値

アプリケーションがデフォルトで保持するルート(SFZRoot)のグローバル領域

解説

画面内での座標を表す、アプリケーションがデフォルトで保持するルート(SFZRoot)のグローバル領域を取得します。

[Note] 注意
この操作はアプリケーションクラスがデフォルトで保持しているルート(SFZRoot)に委譲されて処理されます。

参照

グローバル領域 | SFZRoot | レスポンダツリー | ルートレスポンダ | SFYApplication::GetLocalBound | SFYApplication::GetRealBound


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

戻り値

  • 成功したとき : null 以外のポインタ
  • 失敗したとき : null ポインタ

解説

1つのアプレットにつき唯一のアプリケーションクラスのインスタンスを取得します。開発者はこの関数を利用して、アプレットでグローバルなデータや情報を保持することができます。

使用例

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

//
//  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();

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

戻り値

アプリケーションクラスがデフォルトで保持するルート(SFZRoot)のローカル領域。

解説

仮想領域内での座標を表す、 アプリケーションクラスがデフォルトで保持するルート(SFZRoot)のローカル領域を取得します。

[Note] 注意
この操作はアプリケーションクラスがデフォルトで保持しているルート(SFZRoot)に委譲されて処理されます。

参照

ローカル領域 | 仮想領域 | SFZRoot | レスポンダツリー | ルートレスポンダ | SFYApplication::GetGlobalBound | SFYApplication::GetVirtualBound


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

戻り値

アプリケーションクラスがデフォルトで保持するルート(SFZRoot)の実領域

解説

可視領域を表す、 アプリケーションクラスがデフォルトで保持するルート(SFZRoot)の実領域を取得します。

[Note] 注意
この操作はアプリケーションクラスがデフォルトで保持しているルート(SFZRoot)に委譲されて処理されます。

参照

SFZRoot | 実領域 | レスポンダツリー | ルートレスポンダ | SFYApplication::SetRealBound | SFYApplication::GetVirtualBound | SFYApplication::GetGlobalBound | レスポンダ空間


SFYApplication::GetRenderer
描画エンジンを取得します。
[ public, static ]
SFYRendererPtr GetRenderer(Void);

戻り値

アプリケーションクラスがデフォルトで保持するルート(SFZRoot)に設定された描画エンジン。

設定されていない場合、null が返ります。

解説

アプリケーションクラスがデフォルトで保持するルート(SFZRoot)に設定されている描画エンジンを取得します。

[Note] 注意
この操作はアプリケーションクラスがデフォルトで保持しているルート(SFZRoot)に委譲されて処理されます。

参照

SFYResponder::SetRenderer | 描画エンジン | SFZRoot | ルート | レスポンダツリー | ルートレスポンダ


SFYApplication::GetRoot
ルートレスポンダを取得します。
[ public, static ]
SFYResponderSmp GetRoot(Void);

戻り値

アプリケーションクラスがデフォルトで保持するルート(SFZRoot)。

解説

ルートレスポンダとはレスポンダツリーの最上位に位置するレスポンダです。

親レスポンダを持たないレスポンダはルートレスポンダであるとみなされます。

アプリケーションクラスの場合、 アプリケーションクラスがデフォルトで保持するルート(SFZRoot)が返ります。

■レスポンダツリー

複数のレスポンダで構成されたレスポンダの木構造です。

レスポンダでイベント処理したり、レスポンダを画面上に描画するには、そのレスポンダはレスポンダツリーに所属している必要があります。

[Note] 注意
レスポンダツリーに所属しないレスポンダは、イベント処理や描画ができません。

図 216. レスポンダツリー

レスポンダツリー

■ルートレスポンダ

レスポンダツリーの最上部に位置する特別なレスポンダです。

通常 SFZRoot クラスをルートレスポンダとして利用します。

ルートレスポンダの他のレスポンダとの違いは、イベント配信エンジン (SFYDistributer クラス) や描画エンジン (SFYRenderer クラス) と結びつけてイベントの配信やレスポンダの描画の起点となるところです。

図 217. ルートレスポンダとイベント配信エンジン、描画エンジンの関係

ルートレスポンダとイベント配信エンジン、描画エンジンの関係
[Note] 注意

親レスポンダが存在しないレスポンダはすべてルートレスポンダとみなされるので、ウィンドウやボタンを生成した直後は一時的にルートレスポンダとなっています。

参照

SFZRoot | ルート | SFYResponder::GetRoot | レスポンダツリー | ルートレスポンダ


SFYApplication::GetSuitableBound
最適な大きさを取得します。
[ public ]
SFXRectangle GetSuitableBound(Void);
[ public ]
SFXRectangle GetSuitableBound(
    SFXRectangleConstRef param   // 参考にする領域
);

解説

可視領域を表す、 アプリケーションクラスがデフォルトで保持するルート(SFZRoot)の最適な大きさを取得します。

[Note] 注意
この操作はアプリケーションクラスがデフォルトで保持しているルート(SFZRoot)に委譲されて処理されます。

ラベルやボタンなどを利用するときに、テキストやイメージを設定したのちこの関数を利用すると、最適な大きさを取得することができます。

引数を設定しない場合は、アプリケーションクラスがデフォルトで保持しているルート(SFZRoot)の実領域を元に最適な大きさを計算します。

SFYApplication::GetSuitableBound 関数は、引数を指定する場合は (SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE, *) イベント、 指定しない場合は (SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST, *) イベントをコールバック型でそれぞれ送信します。

[Caution] 注意

SFYResponder::GetSuitableBound 関数はレスポンダの最適な大きさを取得するための関数です。

親レスポンダに配置するためにはレスポンダの実領域の原点の位置をレスポンダの大きさに合わせて調整する必要があります。

参照

SFZRoot | レスポンダツリー | ルートレスポンダ | SFYApplication::SetRealBound | SFYApplication::GetRealBound | SFYWidget::HandleBoundRequest | SFYWidget::HandleBoundOptimize | 実領域 | 領域イベント[SFEVT_RESPONDER_BOUND] | 領域イベント専用ハンドラ[XANDLER_DECLARE_VOIDBOUND] | コールバック型


SFYApplication::GetThis
アプリケーションクラスが保持しているルートを取得します。
[ protected ]
SFYResponderSmp GetThis(Void);

戻り値

アプリケーションクラスがデフォルトで保持しているルート(SFZRoot)。

解説

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

SFYApplication::GetThis 関数は、ルート(SFZRoot)を取得するための関数です。

[Note] 注意
この操作はアプリケーションクラスがデフォルトで保持しているルート(SFZRoot)に委譲されて処理されます。

参照

レスポンダツリー | ルートレスポンダ | ルート | SFZRoot


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

戻り値

アプリケーションクラスがデフォルトで保持するルート(SFZRoot)の仮想領域。

解説

アプリケーションクラスがデフォルトで保持するルート(SFZRoot)の仮想領域を取得します。

[Note] 注意
この操作はアプリケーションクラスがデフォルトで保持しているルート(SFZRoot)に委譲されて処理されます。

参照

仮想領域 | SFZRoot | レスポンダツリー | ルートレスポンダ | SFYApplication::SetVirtualBound | SFYApplication::GetRealBound | SFYApplication::GetLocalBound


SFYApplication::HandleEvent
イベントを処理し、アプレットの画面全体を再描画します。
[ protected, virtual ]
Bool HandleEvent(
    SFXEventConstRef event   // イベント
);

戻り値

  • イベントを処理したとき : true
  • イベントを処理しなかったとき : false

解説

BREW から送信されたイベントを処理する関数です。

イベントを処理し、アプレットの画面全体を再描画します。イベントを処理した場合は true を返し、そうでない場合は false を返します。

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

参照

SFZRoot | ルートレスポンダ


SFYApplication::HandleRender
アプレットの画面全体を再描画します。
[ protected, virtual ]
Bool HandleRender(
    SFXEventConstRef event   // イベント
);

戻り値

  • 描画処理したとき : true
  • 描画処理しなかったとき : false

解説

HandleRender 関数は画面全体の再描画が必要なときに呼び出されます。この関数の内容はアプレットの画面全体の描画です。

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

参照

SFZRoot | ルートレスポンダ


SFYApplication::Invalidate
再描画領域を登録します。
[ public ]
Void Invalidate(Void);
[ public ]
Void Invalidate(
    SFXRectangleConstRef param   // 再描画するルート内の矩形領域(何も指定しない場合はルートの実領域が設定される)
);

解説

アプリケーションクラスがデフォルトで保持しているルート(SFZRoot)について、 ルート内のテキストやイメージなど視覚的な要素が変更されたとき、 ルートの実領域(引数に何も指定しないとき)または引数で指定したルート内の矩形領域を再描画領域として登録します。

[Note] 注意
この操作はアプリケーションクラスがデフォルトで保持しているルート(SFZRoot)に委譲されて処理されます。

再描画領域は SFYApplication::Render 関数が呼び出されたときに他に登録されている再描画領域との配置関係や レスポンダの可視・不可視状態から画面に描画が必要である場合だけ、レスポンダに登録されている描画ハンドラが呼び出されて描画が行われます。

SFYApplication::Render 関数はイベントループの最後に自動的に呼び出されるので、 イベントループ内の処理の途中で SFYApplication::Render 関数を呼び出す必要はありません。

タイマーやネットワークなどのコールバック処理はイベントループから外れるので、 SFYApplication::Render 関数は自動的に呼び出されません。 コールバック処理内で Invalidate() 関数を利用して登録された再描画領域を描画するには、 明示的に SFYApplication::Render 関数を呼び出す必要があります。

なお、Invalidate() 関数は再描画領域を登録するだけです。 テキストやイメージなどの実際の描画処理は、描画ハンドラ内で行われます。

[Note] 描画処理の最適化

Invalidate() 関数には矩形の引数を取るオーバーロード関数が存在します。

再描画領域をレスポンダの部分領域に限定することで、 他のレスポンダ領域の和集合に含まれる可能性が高まります。

この場合、描画ハンドラは呼び出されないので、描画処理のパフォーマンスは更に向上します。

使用例

描画するテキストを変更する方法

SFXWideString _my_text;

...

Void USRWindow::SetText(SFXWideStringConstRef param)
{
    if (param != _my_text) {
        _my_text = param;
        Invalidate();
    }
    return;
}

XANDLER_IMPLEMENT_VOIDRENDER(USRWindow, OnRender, invoker, reason, graphics)
{
    graphics->DrawText(_my_text, GetLocalBound(), SFXRGBColor(0x00, 0x00, 0x00, 0x00));
    return;
}

参照

SFYApplication::Render | SFYResponder::Invalidate | 実領域 | SFZRoot | レスポンダツリー | ルートレスポンダ | 描画処理 | 描画ハンドラ | イベントループ


SFYApplication::InvokeBackward
レスポンダにイベントを送信します。ハンドラ関数はハンドラリストに登録された順序で呼び出されます。
[ public ]
Void InvokeBackward(
    SFXEventConstRef event   // イベント
    Bool overload            // 重複条件
    BoolPtr result = null    // 処理結果
);

解説

アプリケーションクラスがデフォルトで保持しているルート(SFZRoot)にイベントを送信します。

ハンドラ関数は、 ハンドラリストに登録された順で呼び出されます。

[Note] 注意
この操作はアプリケーションクラスがデフォルトで保持しているルート(SFZRoot)に委譲されて処理されます。

重複処理の条件パラメータである overload 引数に false が渡された場合、 ハンドラ関数がイベントを処理して true を返すと、そこで処理を終了します。

overload 引数に true が渡された場合、 ハンドラ関数がイベントを処理して true を返しても、無くなるまでハンドラ関数の呼び出しを継続します。

[Tip] レスポンダ定義イベント
レスポンダ定義イベントは、 InvokeBackward() または InvokeForward() 関数を利用して送信します。
[Tip] 利用シーン

ボタンコントロールやダイアログなどのレスポンダ実装において、 レスポンダ内のテキストやイメージが変更されたときにスタイルイベント[SFEVT_RESPONDER_STYLE]を送信するために利用します。

[Tip] SFYApplication::InvokeForward 関数

ハンドラリストへの登録の逆順でハンドラ関数を呼び出すには、SFYApplication::InvokeForward 関数を使います。

[Caution] 注意
SFYApplication::Distribute 関数とは異なり、 InvokeBackward() 関数を利用して送信されたイベントは、 送信先レスポンダの子レスポンダに配信されません。

使用例

テキストの変更時にスタイルイベントを送信する方法

SFXWideString _my_text;

...

USRApplication::SetText(SFXWideStringConstRef param)
{
    if (param != _my_text) {
        _my_text = param;
        Invalidate();
        InvokeBackward(SFXEvent(SFEVT_RESPONDER_STYLE, SFP16_STYLE_TEXT, 0), true);
    }
    return;
}

参照

SFYApplication::InvokeForward | SFYApplication::Distribute | SFYResponder::InvokeForward | SFYResponder::Distribute | コールバック型 | レスポンダ定義イベント | ハンドラ | ハンドラリスト | SFZRoot | スタイルイベント[SFEVT_RESPONDER_STYLE] | レスポンダツリー | ルートレスポンダ | BREW 定義イベント | イベント一覧 | 配信エンジン | 配信型 | トレーサ


SFYApplication::InvokeForward
レスポンダにイベントを送信します。ハンドラ関数はハンドラリストに登録された逆順で呼び出されます。
[ public ]
Void InvokeForward(
    SFXEventConstRef event   // イベント
    Bool overload            // 重複条件
    BoolPtr result = null    // 処理結果
);

解説

アプリケーションクラスがデフォルトで保持しているルート(SFZRoot)にイベントを送信します。

ハンドラ関数ハンドラリストに登録された逆順で呼び出されます。

[Note] 注意
この操作はアプリケーションクラスがデフォルトで保持しているルート(SFZRoot)に委譲されて処理されます。

重複処理の条件パラメータである overload 引数に false が渡された場合、 ハンドラ関数がイベントを処理して true を返すと、そこで処理を終了します。

overload 引数に true が渡された場合、 ハンドラ関数がイベントを処理して true を返しても、無くなるまでハンドラ関数の呼び出しを継続します。

[Tip] レスポンダ定義イベント
レスポンダ定義イベントは、 InvokeBackward() または InvokeForward() 関数を利用して送信します。
[Tip] 利用シーン

ボタンコントロールやダイアログなどのレスポンダ実装において、 それらに対する操作が行われた時に結果イベント[SFEVT_RESPONDER_RESULT]を送信するために利用します。

[Tip] SFYApplication::InvokeBackward 関数

ハンドラリストへの登録順でハンドラ関数を呼び出すには、SFYApplication::InvokeBackward 関数を使います。

[Caution] 注意
SFYResponder::Distribute 関数とは異なり、 InvokeForward() 関数を利用して送信されたイベントは、 送信先レスポンダの子レスポンダに配信されません。

使用例

ボタンの操作時に結果イベントを送信する方法

Void USRControl::HandleOperateKeyRelease(Void)
{
    InvokeForward(SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_OK, GetCurrentValue()), false);
    return;
}

参照

SFYApplication::InvokeBackward | SFYApplication::Distribute | SFYResponder::InvokeBackward | SFYResponder::Distribute | コールバック型 | レスポンダ定義イベント | ハンドラ | ハンドラリスト | 結果イベント[SFEVT_RESPONDER_RESULT] | SFZRoot | レスポンダツリー | ルートレスポンダ | BREW 定義イベント | イベント一覧 | 配信エンジン | 配信型 | トレーサ


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
  • 不正な引数のとき : SFERR_INVALID_PARAM
  • メモリ不足のとき : SFERR_NO_MEMORY

解説

アプリケーションクラスがデフォルトで保持しているルート(SFZRoot)にハンドラを登録します。

イベント範囲やハンドラ規則が同じ条件の要素を複数個登録することができます。この場合、最後に登録された要素が優先的に評価されます。

[Note] 注意
この操作はアプリケーションクラスがデフォルトで保持しているルート(SFZRoot)に委譲されて処理されます。

使用例

1つのハンドラを登録する方法

SFCError error;

error = RegisterHandler(SFXEventRange(SFEVT_KEY, SFEVT_KEY, SFP16_BEGIN, SFP16_END), XANDLER_INTERNAL(OnKey));

複数のハンドラをまとめて登録する方法

static SFXEventRange::AtomRecConst range[] = {
    {             SFEVT_KEY,              SFEVT_KEY,          SFP16_BEGIN,            SFP16_END},
    {       SFEVT_KEY_PRESS,        SFEVT_KEY_PRESS,          SFP16_BEGIN,            SFP16_END},
    {     SFEVT_KEY_RELEASE,      SFEVT_KEY_RELEASE,          SFP16_BEGIN,            SFP16_END}
};
SFYHandler::RuleRec rule[lengthof(range)];
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));

参照

SFZRoot | レスポンダツリー | ルートレスポンダ | ハンドラ | SFYApplication::UnregisterHandler | SFYApplication::ClearHandler | SFXEventRange


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
  • 不正な引数のとき : SFERR_INVALID_PARAM
  • メモリ不足のとき : SFERR_NO_MEMORY

解説

アプリケーションクラスがデフォルトで保持しているルート(SFZRoot)のトレーサに配信規則を登録します。

イベント範囲やトレーサ規則が同じ条件の要素を複数個登録することができます。この場合、最後に登録された要素が優先的に評価されます。

使用例

1つのトレーサを登録する方法

SFCError error;

error = RegisterTracer(SFXEventRange(SFEVT_APP_START, SFEVT_APP_START, SFP16_BEGIN, SFP16_END), SFYTracer::ORDER_BACKWARD, SFYTracer::STATE_ALL, true);

複数のトレーサをまとめて登録する方法

static SFXEventRange::AtomRecConst range[] = {
    {            SFEVT_APP_START,           SFEVT_APP_START, SFP16_BEGIN, SFP16_END},
    {             SFEVT_APP_STOP,            SFEVT_APP_STOP, SFP16_BEGIN, SFP16_END},
    {           SFEVT_APP_RESUME,          SFEVT_APP_RESUME, SFP16_BEGIN, SFP16_END},
    {          SFEVT_APP_SUSPEND,         SFEVT_APP_SUSPEND, SFP16_BEGIN, SFP16_END}
};
static SFYTracer::RuleRecConst rule[lengthof(range)] = {
    {  SFYTracer::ORDER_BACKWARD,      SFYTracer::STATE_ALL,        true},
    {   SFYTracer::ORDER_FORWARD,      SFYTracer::STATE_ALL,        true},
    {  SFYTracer::ORDER_BACKWARD,      SFYTracer::STATE_ALL,        true},
    {   SFYTracer::ORDER_FORWARD,      SFYTracer::STATE_ALL,        true}
};
SFCError error;

error = RegisterTracer(atomic_cast(range), rule, lengthof(range));

参照

トレーサ | 配信エンジン | レスポンダツリー | ルートレスポンダ | SFYApplication::UnregisterTracer | SFYApplication::ClearTracer |