前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFYMenu
メニューを表す抽象クラスです。
#include <SFYMenu.h.hpp>
class SFYMenu : public SFYWidget;
SFMTYPEDEFCLASS(SFYMenu)

継承図

SFYMenu クラスの継承図

協調図

SFYMenu クラスの協調図

解説

SFYMenu は、各種メニューを実装するための起点となります。

たとえば、 SFZTextMenuSFZGridMenu などのメニューは、 SFYMenu クラスを継承して実装しています。

SFYMenu は、 一定時間経過後に自動的にメニューを閉じる機能と、 操作キーや選択キー、ESCAPE キーの管理を実装し、 いくつかの仮想関数(ハンドラ)の動作をデフォルトで実装します。

デフォルトの実装では、 抽象メニュー[SFYMenu]は 下記の結果イベント[SFEVT_RESPONDER_RESULT]を受信します。

開発者は、これらのイベントを受信するハンドラを登録できます。

ハンドラを登録しない場合、上記結果イベントを受信するとデフォルトのハンドラが起動されます。 デフォルトのハンドラは、メニューを閉じる処理だけを行います。

操作キーは、SFYMenu::SetOperateKey 関数を使用して設定します。 デフォルトでは、セレクトキーが操作キーとして割り当てられています。

ESCAPE キーは、SFYMenu::SetEscapeKey 関数を使用して設定します。 デフォルトでは、クリアキーが ESCAPE キーとして割り当てられています。

[Note] タイマーのキャンセル

SFYMenu::ScheduleTimer 関数で設定したタイマー処理は、 操作キーまたは ESCAPE キーを押したときに自動的にキャンセルされます。

サスペンド時もタイマーはキャンセルされますが、 レジューム時に SFYMenu::ScheduleTimer 関数の引数に指定した時間でタイマー処理は再開されます。

メニューの有効状態が無効になったときもタイマーはキャンセルされます。

選択キーは、 SFYMenu::SetSelectUpKey / SFYMenu::SetSelectDownKey / SFYMenu::SetSelectRightKey / SFYMenu::SetSelectLeftKey 関数を使用して設定します。 デフォルトでは、 それぞれ上矢印キー、下矢印キー、右矢印キー、左矢印キーが選択キーとして割り当てられています。

参照: 結果イベント[SFEVT_RESPONDER_RESULT] | SFYMenu::HandleOperateKey | SFYMenu::HandleEscapeKey | SFYMenu::HandleSelectUpKey | SFYMenu::HandleSelectDownKey | SFYMenu::HandleSelectRightKey | SFYMenu::HandleSelectLeftKey

SFYMenu を継承するレスポンダでは、 SFYMenu::SFYMenu / SFYWidget::SFYWidget コンストラクタで登録されたハンドラの処理により、 下記のイベントを受信すると、対応する下記の仮想関数(ハンドラ)が最初に呼び出されます。 その後、開発者がレスポンダに登録したハンドラが呼び出されることになります。

[Note] 注意

ハンドラの詳細については、 SFYMenu::SFYMenu / SFYWidget::SFYWidget コンストラクタの解説を参照してください。

[Tip] Tip

ハンドラを登録する手間を省略できるので、 通常、これらのイベント処理は仮想関数をオーバーライドして記述します。

表 243. イベント、仮想関数(ハンドラ)とデフォルト動作

イベント 仮想関数(ハンドラ) デフォルトの動作 オーバーライド
SFYMenu::SetOperateKey で設定されたキーの SFEVT_KEY イベント SFYMenu::HandleOperateKey イベントを送信する※1 任意
SFYMenu::SetEscapeKey で設定されたキーの SFEVT_KEY イベント SFYMenu::HandleEscapeKey イベントを送信する※2 任意
SFYMenu::SetSelectUpKey で設定されたキーの SFEVT_KEY イベント SFYMenu::HandleSelectUpKey 任意
SFYMenu::SetSelectDownKey で設定されたキーの SFEVT_KEY イベント SFYMenu::HandleSelectDownKey 任意
SFYMenu::SetSelectRightKey で設定されたキーの SFEVT_KEY イベント SFYMenu::HandleSelectRightKey 任意
SFYMenu::SetSelectLeftKey で設定されたキーの SFEVT_KEY イベント SFYMenu::HandleSelectLeftKey 任意
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST) イベント SFYWidget::HandleBoundRequest 推奨
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE) イベント SFYWidget::HandleBoundOptimize 推奨
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL) イベント SFYMenu::HandleBoundReal 仮想領域を調整※3 任意
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL) イベント SFYWidget::HandleBoundVirtual 任意
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_GLOBAL) イベント SFYWidget::HandleBoundGlobal 非推奨[廃止予定]
(SFEVT_RESPONDER_RENDER, SFP16_RENDER_REQUEST) イベント SFYWidget::HandleRenderRequest 任意

※デフォルトの動作にある "−" は何も実装していないことを表す。

[Note] 注釈

※1. SFYResponder::InvokeForward(SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_CANCEL, 0), false) を実行します。 SFYMenu::HandleOperateKey 関数を呼び出す直前に、 SFYMenu::ScheduleTimer 関数で設定したタイマー処理をキャンセルする操作が内部的に行われます。

※2. SFYResponder::InvokeForward(SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_ESCAPE, 0), false) を実行します。 SFYMenu::HandleEscapeKey 関数を呼び出す直前に、 SFYMenu::ScheduleTimer 関数で設定したタイマー処理をキャンセルする操作が内部的に行われます。

※3. SFYResponder::SetVirtualBound(SFXRectangle(SFXGrid::ZeroInstance(), GetRealBound().GetSize())) を実行します。

以下にユーザー定義メニューを作成するときに最低限必要なコードを示します。

例 883. 宣言

SFMTYPEDEFRESPONDER(USRMenu)
class USRMenu: public SFYMenu {
    SFMSEALRESPONDER(USRMenu)
    SFMRESPONDERINSTANTIATETHREE(USRMenu, SFYMenu, SFYWidget, SFYResponder)
public:

    // レスポンダのタイプを定義する
    // 小文字と記号のみからなるタイプは予約されているので使えない
    enum CodeEnum {
        CODE_TYPE = four_char_code('U', 'M', 'N', 'U')
    };
    SFMTYPEDEFTYPE(CodeEnum)

public:
    static USRMenuSmp NewInstance(SFCErrorPtr exception = null);
protected:
    explicit USRMenu(Void) static_throws;
    virtual ~USRMenu(Void);

    // 親クラスで定義されている仮想関数のうち、実装が推奨される仮想関数
    virtual Void HandleOperateKey(Void);
    virtual Void HandleSelectUpKey(Void);
    virtual Void HandleSelectDownKey(Void);
    virtual Void HandleBoundRequest(SFXRectanglePtr rectangle) const;
    virtual Void HandleBoundOptimize(SFXRectanglePtr rectangle) const;
    virtual Void HandleBoundReal(Void);
    virtual Void HandleBoundVirtual(Void);
    virtual Void HandleRenderRequest(SFXGraphicsPtr graphics) const;
};

例 884. 実装

USRMenu::USRMenu(Void) static_throws
{
    if (static_try()) {

        // レスポンダのタイプを設定する
        SetType(CODE_TYPE);

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

USRMenu::~USRMenu(Void)
{
    // 終了処理を記述する
}

USRMenuSmp USRMenu::NewInstance(SFCErrorPtr exception)
{
    return static_pointer_cast<USRMenu>(Factory(::new USRMenu, exception));
}

Void USRMenu::HandleOperateKey(Void)
{
    // 操作キー押下時に必要な処理があれば、ここに記述する
    // 通常、以下のようにイベントを送信する
    // _select 変数は選択されている項目の番号を表すものとする
    InvokeForward(SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_OK, _select), false);

    return;
}

Void USRMenu::HandleSelectUpKey(Void)
{
    // 上キー押下時に必要な処理があれば、ここに記述する
    // 例:選択されている項目を1つ戻すなど

    return;
}

Void USRMenu::HandleSelectDownKey(Void)
{
    // 下キー押下時に必要な処理があれば、ここに記述する
    // 例:選択されている項目を1つ進めるなど

    return;
}

Void USRMenu::HandleBoundRequest(SFXRectanglePtr rectangle) const
{
    // メニューに最適な大きさを計算して rectangle パラメータに設定する
    // この関数内では、rectangle の原点は変更せず、rectangle のサイズだけを設定する(推奨)

    return;
}

Void USRMenu::HandleBoundOptimize(SFXRectanglePtr rectangle) const
{
    // メニューに最適な大きさを rectangle パラメータ内の大きさに
    // 収まるように計算し、rectangle パラメータに設定する
    // この関数内では、rectangle の原点は変更せず、rectangle のサイズだけを設定する(推奨)

    return;
}

Void USRMenu::HandleBoundReal(Void)
{
    // 実領域が変更された場合に再計算が必要なものがあれば、ここに記述する

    return;
}

Void USRMenu::HandleBoundVirtual(Void)
{
    // 仮想領域が変更された場合に再計算が必要なものがあれば、ここに記述する

    return;
}

Void USRMenu::HandleRenderRequest(SFXGraphicsPtr graphics) const
{
    // メニューを描画する

    return;
}

参照

SFYMenu::SFYMenu | SFYWidget::SFYWidget | SFZTextMenu | SFZGridMenu | SFZFlexListMenu | SFZRoot | キーイベント[SFEVT_KEY] | 領域イベント[SFEVT_RESPONDER_BOUND] | 描画イベント[SFEVT_RESPONDER_RENDER] | メニュー(基礎編)

メンバ

コンストラクタ/デストラクタ
SFYMenu( Void )
SFYMenu クラスのコンストラクタです。
~SFYMenu( Void )
SFYMenu クラスのデストラクタです。
パブリック関数
Void CancelTimer( Void )
タイマーをキャンセルします。
AVKType GetEscapeKey( Void )
ESCAPE キーを取得します。
AVKType GetOperateKey( Void )
操作キーを取得します。
AVKType GetSelectDownKey( Void )
DOWN キーを取得します。
AVKType GetSelectLeftKey( Void )
LEFT キーを取得します。
AVKType GetSelectRightKey( Void )
RIGHT キーを取得します。
AVKType GetSelectUpKey( Void )
UP キーを取得します。
Void RewindTimer( Void )
メニューが自動的に閉じるまでの時間を再設定します。
Void ScheduleTimer( UInt32 param )
指定時間経過後に、 ESCAPE キー押下と同等の処理が行われるようにタイマーをスケジュールします。
Void SetEscapeKey( AVKType param )
ESCAPE キーを設定します。
Void SetOperateKey( AVKType param )
操作キーを設定します。
Void SetSelectDownKey( AVKType param )
DOWN キーを設定します。
Void SetSelectLeftKey( AVKType param )
LEFT キーを設定します。
Void SetSelectRightKey( AVKType param )
RIGHT キーを設定します。
Void SetSelectUpKey( AVKType param )
UP キーを設定します。
Void ClearHandler( Void ) (SFYResponder から継承)
このレスポンダのハンドラの登録をすべて解除します。
Void ClearTracer( Void ) (SFYResponder から継承)
このレスポンダのトレーサの配信規則の登録をすべて解除します。
SFCError Distribute( SFXEventConstRef event , BoolPtr result = null ) (SFYResponder から継承)
指定された配信型イベントを SFYDistributer インスタンスと、このレスポンダ以下のレスポンダツリーに配信します。
SFXRGBColorConstRef GetBackgroundColor( Void ) (SFYWidget から継承)
背景の色を取得します。
SFYResponderSmp GetChildBack( Void ) (SFYResponder から継承)
最背面に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildBack( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
最背面に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildBack( UInt32 id ) (SFYResponder から継承)
最背面に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildBack( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
最背面に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildBackward( SInt32 index ) (SFYResponder から継承)
背面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildBackward( SInt32 index , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
背面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildBackward( SInt32 index , UInt32 id ) (SFYResponder から継承)
背面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildBackward( SInt32 index , UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
背面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
SInt32 GetChildCount( Void ) (SFYResponder から継承)
このレスポンダの子レスポンダの数を取得します。
SInt32 GetChildCount( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダの子レスポンダの数を取得します。
SInt32 GetChildCount( UInt32 id ) (SFYResponder から継承)
このレスポンダの子レスポンダの数を取得します。
SInt32 GetChildCount( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダの子レスポンダの数を取得します。
SFYResponderSmp GetChildForward( SInt32 index ) (SFYResponder から継承)
前面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildForward( SInt32 index , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
前面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildForward( SInt32 index , UInt32 id ) (SFYResponder から継承)
前面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildForward( SInt32 index , UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
前面から数えて指定された順番に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildFront( Void ) (SFYResponder から継承)
最前面に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildFront( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
最前面に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildFront( UInt32 id ) (SFYResponder から継承)
最前面に位置するこのレスポンダの子レスポンダを取得します。
SFYResponderSmp GetChildFront( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
最前面に位置するこのレスポンダの子レスポンダを取得します。
SFYDistributerPtr GetDistributer( Void ) (SFYResponder から継承)
このレスポンダに設定されている配信エンジンを取得します。
SFYResponderSmp GetFrame( Void ) (SFYResponder から継承)
このレスポンダに装着されたフレームを取得します。
SFXRectangle GetGlobalBound( Void ) (SFYResponder から継承)
このレスポンダのグローバル領域を取得します。
UInt32 GetID( Void ) (SFYResponder から継承)
このレスポンダの ID を取得します。
SFXRectangle GetLocalBound( Void ) (SFYResponder から継承)
このレスポンダのローカル領域を取得します。
SInt32 GetNthBackward( Void ) (SFYResponder から継承)
このレスポンダが背面から数えて何番目に位置するかを取得します。
SInt32 GetNthBackward( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが背面から数えて何番目に位置するかを取得します。
SInt32 GetNthBackward( UInt32 id ) (SFYResponder から継承)
このレスポンダが背面から数えて何番目に位置するかを取得します。
SInt32 GetNthBackward( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが背面から数えて何番目に位置するかを取得します。
SInt32 GetNthForward( Void ) (SFYResponder から継承)
このレスポンダが前面から数えて何番目に位置するかを取得します。
SInt32 GetNthForward( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが前面から数えて何番目に位置するかを取得します。
SInt32 GetNthForward( UInt32 id ) (SFYResponder から継承)
このレスポンダが前面から数えて何番目に位置するかを取得します。
SInt32 GetNthForward( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが前面から数えて何番目に位置するかを取得します。
SFYResponderSmp GetParent( Void ) (SFYResponder から継承)
このレスポンダの親レスポンダを取得します。
Bool GetPropertyTransparent( Void ) (SFYResponder から継承)
このレスポンダの透過属性を取得します。
SFXRectangleConstRef GetRealBound( Void ) (SFYResponder から継承)
このレスポンダの実領域を取得します。
VoidPtr GetReference( Void ) (SFYResponder から継承)
このレスポンダのリファレンス値を取得します。
SFYRendererPtr GetRenderer( Void ) (SFYResponder から継承)
このレスポンダに設定されている描画エンジンを取得します。
SFYResponderSmp GetRoot( Void ) (SFYResponder から継承)
このレスポンダが所属するレスポンダツリーのルートレスポンダを取得します。
Bool GetStateActive( Bool inherit = false ) (SFYResponder から継承)
このレスポンダの活性状態を取得します。
Bool GetStateEnable( Bool inherit = false ) (SFYResponder から継承)
このレスポンダの操作可能状態を取得します。
Bool GetStateFocus( Bool inherit = false ) (SFYResponder から継承)
このレスポンダのフォーカス状態を取得します。
Bool GetStateValid( Bool inherit = false ) (SFYResponder から継承)
このレスポンダの有効状態を取得します。
Bool GetStateVisible( Bool inherit = false ) (SFYResponder から継承)
このレスポンダの可視状態を取得します。
SFXRectangle GetSuitableBound( Void ) (SFYResponder から継承)
このレスポンダの最適な領域(サイズ)を取得します。
SFXRectangle GetSuitableBound( SFXRectangleConstRef rectangle ) (SFYResponder から継承)
このレスポンダの最適な領域(サイズ)を取得します。
SFXRectangle GetSuitableBound( SFXRectangleConstRef param , HorizontalEnum horizontal , VerticalEnum vertical ) (SFYResponder から継承)
このレスポンダの最適な領域(サイズ)を取得します。
SFXMargin GetSuitableMargin( Void ) (SFYResponder から継承)
このレスポンダのフレーム余白領域を取得します。
SFCType GetType( Void ) (SFYResponder から継承)
このレスポンダのタイプを取得します。
SFXRectangleConstRef GetVirtualBound( Void ) (SFYResponder から継承)
このレスポンダの仮想領域を取得します。
Bool HasFrame( Void ) (SFYResponder から継承)
このレスポンダがコンテントレスポンダであるかどうかを判定します。
Void Initialize( Void ) (SFYResponder から継承)
このレスポンダを初期化します。
Void Invalidate( Void ) (SFYResponder から継承)
指定された領域を再描画領域に登録します。
Void Invalidate( SFXRectangleConstRef param ) (SFYResponder から継承)
指定された領域を再描画領域に登録します。
Void InvokeBackward( SFXEventConstRef event , Bool overload , BoolPtr result = null ) (SFYResponder から継承)
指定されたコールバック型イベントをこのレスポンダに送信します (ハンドラは登録順に起動されます)。
Void InvokeForward( SFXEventConstRef event , Bool overload , BoolPtr result = null ) (SFYResponder から継承)
指定されたコールバック型イベントをこのレスポンダに送信します (ハンドラは登録の逆順に起動されます)。
Bool IsBack( Void ) (SFYResponder から継承)
このレスポンダが最背面に位置するかどうかを判定します。
Bool IsBack( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが最背面に位置するかどうかを判定します。
Bool IsBack( UInt32 id ) (SFYResponder から継承)
このレスポンダが最背面に位置するかどうかを判定します。
Bool IsBack( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが最背面に位置するかどうかを判定します。
Bool IsFrame( Void ) (SFYResponder から継承)
このレスポンダがアタッチメントフレームであるかどうかを判定します。
Bool IsFront( Void ) (SFYResponder から継承)
このレスポンダが最前面に位置するかどうかを判定します。
Bool IsFront( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが最前面に位置するかどうかを判定します。
Bool IsFront( UInt32 id ) (SFYResponder から継承)
このレスポンダが最前面に位置するかどうかを判定します。
Bool IsFront( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが最前面に位置するかどうかを判定します。
Bool IsNthBackward( SInt32 index ) (SFYResponder から継承)
このレスポンダが背面から数えて指定された順番に位置するかどうかを判定します。
Bool IsNthBackward( SInt32 index , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが背面から数えて指定された順番に位置するかどうかを判定します。
Bool IsNthBackward( SInt32 index , UInt32 id ) (SFYResponder から継承)
このレスポンダが背面から数えて指定された順番に位置するかどうかを判定します。
Bool IsNthBackward( SInt32 index , UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが背面から数えて指定された順番に位置するかどうかを判定します。
Bool IsNthForward( SInt32 index ) (SFYResponder から継承)
このレスポンダが前面から数えて指定された順番に位置するかどうかを判定します。
Bool IsNthForward( SInt32 index , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが前面から数えて指定された順番に位置するかどうかを判定します。
Bool IsNthForward( SInt32 index , UInt32 id ) (SFYResponder から継承)
このレスポンダが前面から数えて指定された順番に位置するかどうかを判定します。
Bool IsNthForward( SInt32 index , UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダが前面から数えて指定された順番に位置するかどうかを判定します。
Bool IsRoot( Void ) (SFYResponder から継承)
このレスポンダがルートレスポンダであるかどうかを判定します。
SFCError Recover( Void ) (SFYResponder から継承)
デバイス画面保存用ビットマップを使用してこのレスポンダとレスポンダ空間との交差領域を復元します。
SFCError RegisterHandler( SFXEventRangeConstRef range , SFYHandler::RuleRecConstRef rule ) (SFYResponder から継承)
指定されたハンドラをこのレスポンダに登録します。
SFCError RegisterHandler( SFXEventRangeConstRef range , SFYHandler::HandlerSPP spp , VoidPtr reference ) (SFYResponder から継承)
指定されたハンドラをこのレスポンダに登録します。
SFCError RegisterHandler( SFXEventRangeConstPtr range , SFYHandler::RuleRecConstPtr rule , SInt32 length ) (SFYResponder から継承)
指定されたハンドラをこのレスポンダに登録します。
SFCError RegisterHandler( SFXEventRangeConstPtr range , SFYHandler::HandlerSPPConstPtr spp , VoidPtrConstPtr reference , SInt32 length ) (SFYResponder から継承)
指定されたハンドラをこのレスポンダに登録します。
SFCError RegisterTracer( SFXEventRangeConstRef range , SFYTracer::RuleRecConstRef rule ) (SFYResponder から継承)
指定された配信規則をこのレスポンダのトレーサに登録します。
SFCError RegisterTracer( SFXEventRangeConstRef range , SFYTracer::OrderEnum order , SFYTracer::StateEnum state , Bool overload ) (SFYResponder から継承)
指定された配信規則をこのレスポンダのトレーサに登録します。
SFCError RegisterTracer( SFXEventRangeConstPtr range , SFYTracer::RuleRecConstPtr rule , SInt32 length ) (SFYResponder から継承)
指定された配信規則をこのレスポンダのトレーサに登録します。
SFCError RegisterTracer( SFXEventRangeConstPtr range , SFYTracer::OrderEnumConstPtr order , SFYTracer::StateEnumConstPtr state , BoolConstPtr overload , SInt32 length ) (SFYResponder から継承)
指定された配信規則をこのレスポンダのトレーサに登録します。
SFCError Render( Bool force = false ) (SFYResponder から継承)
このレスポンダ以下のレスポンダツリーをレスポンダ空間に再描画します。
Void SetBackgroundColor( SFXRGBColorConstRef param ) (SFYWidget から継承)
背景の色を設定します。
Void SetDistributer( SFYDistributerPtr param ) (SFYResponder から継承)
指定された配信エンジンをこのレスポンダに設定します。
SFCError SetFrame( SFYResponderSmpConstRef param ) (SFYResponder から継承)
このレスポンダにフレームを装着します。
Void SetID( UInt32 param ) (SFYResponder から継承)
指定された ID をこのレスポンダに設定します。
SFCError SetParent( SFYResponderSmpConstRef param ) (SFYResponder から継承)
指定されたレスポンダをこのレスポンダの親レスポンダに設定します。
Void SetProperty( Bool transparent ) (SFYResponder から継承)
指定された属性をこのレスポンダに設定します。
Void SetPropertyTransparent( Bool param ) (SFYResponder から継承)
指定された透過属性をこのレスポンダに設定します。
Void SetRealBound( SFXRectangleConstRef param ) (SFYResponder から継承)
指定された領域をこのレスポンダの実領域に設定します。
Void SetReference( VoidPtr param ) (SFYResponder から継承)
指定された値をこのレスポンダのリファレンスに設定します。
Void SetRenderer( SFYRendererPtr param ) (SFYResponder から継承)
指定された描画エンジンをこのレスポンダに設定します。
Void SetState( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
指定された値をこのレスポンダの可視、活性、操作可能、フォーカスの各状態フラグに設定します。
Void SetStateActive( Bool param ) (SFYResponder から継承)
指定された値をこのレスポンダの活性状態フラグに設定します。
Void SetStateEnable( Bool param ) (SFYResponder から継承)
指定された値をこのレスポンダの操作可能状態フラグに設定します。
Void SetStateFocus( Bool param ) (SFYResponder から継承)
指定された値をこのレスポンダのフォーカス状態フラグに設定します。
Void SetStateVisible( Bool param ) (SFYResponder から継承)
指定された値をこのレスポンダの可視状態フラグに設定します。
Void SetVirtualBound( SFXRectangleConstRef param ) (SFYResponder から継承)
指定された領域をこのレスポンダの仮想領域に設定します。
SFCError Snapshot( SFBBitmapSmpConstRef bitmap ) (SFYResponder から継承)
デバイス画面保存用ビットマップからこのレスポンダとレスポンダ空間との交差領域のスナップショットを取得します。
Void Terminate( Void ) (SFYResponder から継承)
このレスポンダの終了処理を行います。
Void ToBack( Void ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで最背面に移動します。
Void ToBack( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで最背面に移動します。
Void ToBack( UInt32 id ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで最背面に移動します。
Void ToBack( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで最背面に移動します。
Void ToFront( Void ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで最前面に移動します。
Void ToFront( Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで最前面に移動します。
Void ToFront( UInt32 id ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで最前面に移動します。
Void ToFront( UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで最前面に移動します。
Void ToNthBackward( SInt32 index ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで背面から数えて指定された位置に移動します。
Void ToNthBackward( SInt32 index , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで背面から数えて指定された位置に移動します。
Void ToNthBackward( SInt32 index , UInt32 id ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで背面から数えて指定された位置に移動します。
Void ToNthBackward( SInt32 index , UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで背面から数えて指定された位置に移動します。
Void ToNthForward( SInt32 index ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで前面から数えて指定された位置に移動します。
Void ToNthForward( SInt32 index , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで前面から数えて指定された位置に移動します。
Void ToNthForward( SInt32 index , UInt32 id ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで前面から数えて指定された位置に移動します。
Void ToNthForward( SInt32 index , UInt32 id , Bool visible , Bool active , Bool enable , Bool focus ) (SFYResponder から継承)
このレスポンダを指定された条件の姉妹レスポンダのなかで前面から数えて指定された位置に移動します。
Void UnregisterHandler( SFXEventRangeConstRef range , SFYHandler::RuleRecConstRef rule ) (SFYResponder から継承)
このレスポンダから指定されたハンドラの登録を解除します。
Void UnregisterHandler( SFXEventRangeConstRef range , SFYHandler::HandlerSPP spp , VoidPtr reference ) (SFYResponder から継承)
このレスポンダから指定されたハンドラの登録を解除します。
Void UnregisterHandler( SFXEventRangeConstPtr range , SFYHandler::RuleRecConstPtr rule , SInt32 length ) (SFYResponder から継承)
このレスポンダから指定されたハンドラの登録を解除します。
Void UnregisterHandler( SFXEventRangeConstPtr range , SFYHandler::HandlerSPPConstPtr spp , VoidPtrConstPtr reference , SInt32 length ) (SFYResponder から継承)
このレスポンダから指定されたハンドラの登録を解除します。
Void UnregisterTracer( SFXEventRangeConstRef range ) (SFYResponder から継承)
このレスポンダのトレーサから指定された配信規則の登録を解除します。
Void UnregisterTracer( SFXEventRangeConstPtr range , SInt32 length ) (SFYResponder から継承)
このレスポンダのトレーサから指定された配信規則の登録を解除します。
プロテクト関数
Void HandleBoundReal( Void )
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL) イベントを受信したときに呼び出される関数です (実領域が変化したときの処理を行います)。
Void HandleEscapeKey( Void )
ESCAPE キーの SFEVT_KEY イベントを受信したとき、 または ScheduleTimer 関数で指定した時間が経過したときに呼び出される関数です。
Void HandleOperateKey( Void )
操作キーの SFEVT_KEY イベントを受信したときに呼び出される関数です。
Void HandleSelectDownKey( Void )
DOWN キーの SFEVT_KEY イベントを受信したときに呼び出される関数です。
Void HandleSelectLeftKey( Void )
LEFT キーの SFEVT_KEY イベントを受信したときに呼び出される関数です。
Void HandleSelectRightKey( Void )
RIGHT キーの SFEVT_KEY イベントを受信したときに呼び出される関数です。
Void HandleSelectUpKey( Void )
UP キーの SFEVT_KEY イベントを受信したときに呼び出される関数です。
static
SFYResponderSmp
Factory( SFYResponderPtr responder , SFCErrorPtr exception = null ) (SFYResponder から継承)
NewInstance 関数の実装を補助します。
SFYResponderSmp GetThis( Void ) (SFYResponder から継承)
このレスポンダのスマートポインタを取得します。
Void HandleBoundGlobal( SFXRectangleConstRef rectangle ) (SFYWidget から継承)
[非推奨(廃止予定 API)] グローバル領域が変化したときに呼び出される関数です。
Void HandleBoundOptimize( SFXRectanglePtr rectangle ) (SFYWidget から継承)
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE) イベントを受信したときに呼び出される関数です(指定した矩形に収まる範囲内で最適な領域を計算します)。
Void HandleBoundRequest( SFXRectanglePtr rectangle ) (SFYWidget から継承)
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST) イベントを受信したときに呼び出される関数です(最適な領域を計算します)。
Void HandleBoundVirtual( Void ) (SFYWidget から継承)
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL) イベントを受信したときに呼び出される関数です (仮想領域が変化したときの処理を行います)。
Void HandleRenderRequest( SFXGraphicsPtr graphics ) (SFYWidget から継承)
描画イベントを受信したときに呼び出される関数です(レスポンダを描画します)。
Void SetType( SFCType param ) (SFYResponder から継承)
指定された値をこのレスポンダのタイプに設定します。
CodeEnum
SFYMenu クラスを表す定数です。
HorizontalEnum (SFYResponder から継承)
水平方向のアライメントを表す定数です。
VerticalEnum (SFYResponder から継承)
垂直方向のアライメントを表す定数です。

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

解説

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

  1. タイプを ".mnu" に設定します。
  2. 背景色を SFXRGBColor(0xEE, 0xEE, 0xEE, 0x00) [薄灰色] に設定します。
  3. 操作キーを AVK_SELECT に設定します。
  4. ESCAPE キーを AVK_CLR に設定します。
  5. UP キーを AVK_UP に設定します。
  6. DOWN キーを AVK_DOWN に設定します。
  7. LEFT キーを AVK_LEFT に設定します。
  8. RIGHT キーを AVK_RIGHT に設定します。
  9. 下表にあるハンドラをレスポンダに登録します。

表 244. イベントハンドラ

イベント ハンドラの内容
SFYMenu::SetOperateKey で設定された操作キーの SFEVT_KEY イベント SFYMenu::ScheduleTimer 関数で設定したタイマー処理をキャンセルし、 SFYMenu::HandleOperateKey 関数を呼び出します。
SFYMenu::SetEscapeKey で設定された ESCAPE キーの SFEVT_KEY イベント SFYMenu::ScheduleTimer 関数で設定したタイマー処理をキャンセルし、 SFYMenu::HandleEscapeKey 関数を呼び出します。
SFYMenu::SetSelectUpKey で設定された UP キーの SFEVT_KEY イベント SFYMenu::HandleSelectUpKey 関数を呼び出します。
SFYMenu::SetSelectDownKey で設定された DOWN キーの SFEVT_KEY イベント SFYMenu::HandleSelectDownKey 関数を呼び出します。
SFYMenu::SetSelectLeftKey で設定された LEFT キーの SFEVT_KEY イベント SFYMenu::HandleSelectLeftKey 関数を呼び出します。
SFYMenu::SetSelectRightKey で設定された RIGHT キーの SFEVT_KEY イベント SFYMenu::HandleSelectRightKey 関数を呼び出します。
結果イベント[SFEVT_RESPONDER_RESULT] このメニューを閉じます。
SFYMenu::ScheduleTimer で設定されるタイマーイベント SFYMenu::HandleEscapeKey 関数を呼び出し、画面を再描画します。
アプリ中断イベント[SFEVT_APP_SUSPEND] 指定時間経過後に閉じるためのタイマー処理をキャンセルします。
アプリ再開イベント[SFEVT_APP_RESUME] 指定時間経過後に閉じるためのタイマー処理を再開します。
[Note] 注意
SFYMenu クラスを継承するレスポンダでは、 上記イベントが発生すると、それに対応するハンドラが呼び出されます。

内部実装

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

/*protected */SFYMenu::SFYMenu(Void) static_throws : _state(STATE_IDLE)
{
    static SFXRGBColor::AtomRecConst            rgb[] = {
        {{{0x00, 0xEE, 0xEE, 0xEE}}}
    };
    static SFXEventRange::AtomRecConst          trange[] = {
        {     SFEVT_APP_RESUME,       SFEVT_APP_RESUME,           SFP16_BEGIN,            SFP16_END},
        {     SFEVT_APP_SUSPEND,      SFEVT_APP_SUSPEND,          SFP16_BEGIN,            SFP16_END},
        #if TARGET_VERSION_GE(3, 0, 0)
        {       SFEVT_KEY_PRESS,      SFEVT_KEY_RELEASE,          SFP16_BEGIN,            SFP16_END},
        #else
        {       SFEVT_KEY_PRESS,         SFEVT_KEY_HELD,          SFP16_BEGIN,            SFP16_END},
        #endif
        {             SFEVT_KEY,              SFEVT_KEY,          SFP16_BEGIN,            SFP16_END},
        {             SFEVT_KEY,              SFEVT_KEY,          SFP16_BEGIN,            SFP16_END},
        { SFEVT_RESPONDER_STATE,  SFEVT_RESPONDER_STATE,    SFP16_STATE_VALID,    SFP16_STATE_VALID},
        {SFEVT_RESPONDER_RESULT, SFEVT_RESPONDER_RESULT,          SFP16_BEGIN,            SFP16_END}
    };
    SFYHandler::RuleRec                         trule[lengthof(trange)];

    if (static_try()) {
        SetType(CODE_TYPE);
        trule[0].spp = XANDLER_FUNCTION(OnAppResume);
        trule[0].reference = this;
        trule[1].spp = XANDLER_FUNCTION(OnAppSuspend);
        trule[1].reference = this;
        trule[2].spp = XANDLER_FUNCTION(OnShield);
        trule[2].reference = this;
        trule[3].spp = XANDLER_FUNCTION(OnKey);
        trule[3].reference = this;
        trule[4].spp = XANDLER_FUNCTION(OnRewind);
        trule[4].reference = this;
        trule[5].spp = XANDLER_FUNCTION(OnStateValid);
        trule[5].reference = this;
        trule[6].spp = XANDLER_FUNCTION(OnMenuResult);
        trule[6].reference = this;
        static_throw(RegisterHandler(atomic_cast(trange), trule, lengthof(trange)));
        if (static_try()) {
            SetBackgroundColor(rgb[0]);
            _timer.Set(XALLBACK_INTERNAL(OnTimer));
            _msec = 0;
            _key.operate = AVK_SELECT;
            _key.escape = AVK_CLR;
            _key.up = AVK_UP;
            _key.down = AVK_DOWN;
            _key.left = AVK_LEFT;
            _key.right = AVK_RIGHT;
        }
    }
}// SFYMenu::SFYMenu //

/*private */XANDLER_IMPLEMENT_VOIDRESUME(SFYMenu, OnAppResume, invoker, environment)
{
    unused(invoker);
    unused(environment);
    if (_state == STATE_FIRE) {
        _timer.Schedule(_msec);
    }
    return;
}// XANDLER_IMPLEMENT_VOIDRESUME(SFYMenu, OnAppResume) //

/*private */XANDLER_IMPLEMENT_VOIDSUSPEND(SFYMenu, OnAppSuspend, invoker, reason, info)
{
    unused(invoker);
    unused(reason);
    unused(info);
    if (_state != STATE_IDLE) {
        _timer.Cancel();
    }
    return;
}// XANDLER_IMPLEMENT_VOIDSUSPEND(SFYMenu, OnAppSuspend) //

/*private */XANDLER_IMPLEMENT_BOOLEVENT(SFYMenu, OnShield, invoker, event)
{
    unused(invoker);
    return (event.GetP16() == _key.operate || event.GetP16() == _key.escape || event.GetP16() == _key.up || event.GetP16() == _key.down || event.GetP16() == _key.left || event.GetP16() == _key.right);
}// XANDLER_IMPLEMENT_BOOLEVENT(SFYMenu, OnShield) //

/*private */XANDLER_IMPLEMENT_BOOLEVENT(SFYMenu, OnKey, invoker, event)
{
    Bool                                        result(false);

    unused(invoker);
    if (event.GetP16() == _key.operate) {
        CancelTimer();
        HandleOperateKey();
        result = true;
    }
    else if (event.GetP16() == _key.escape) {
        CancelTimer();
        HandleEscapeKey();
        result = true;
    }
    else if (event.GetP16() == _key.up) {
        HandleSelectUpKey();
        result = true;
    }
    else if (event.GetP16() == _key.down) {
        HandleSelectDownKey();
        result = true;
    }
    else if (event.GetP16() == _key.left) {
        HandleSelectLeftKey();
        result = true;
    }
    else if (event.GetP16() == _key.right) {
        HandleSelectRightKey();
        result = true;
    }
    return result;
}// XANDLER_IMPLEMENT_BOOLEVENT(SFYMenu, OnKey) //

/*private */XANDLER_IMPLEMENT_BOOLEVENT(SFYMenu, OnRewind, invoker, event)
{
    unused(invoker);
    unused(event);
    RewindTimer();
    return false;
}// XANDLER_IMPLEMENT_BOOLEVENT(SFYMenu, OnRewind) //

/*private */XANDLER_IMPLEMENT_VOIDSTATE(SFYMenu, OnStateValid, invoker, reason, state)
{
    unused(invoker);
    unused(reason);
    if (!state) {
        CancelTimer();
    }
    return;
}// XANDLER_IMPLEMENT_VOIDSTATE(SFYMenu, OnStateValid) //

/*private */XANDLER_IMPLEMENT_VOIDRESULT(SFYMenu, OnMenuResult, invoker, reason, result)
{
    unused(invoker);
    unused(reason);
    unused(result);
    Terminate();
    return;
}// XANDLER_IMPLEMENT_VOIDRESULT(SFYMenu, OnMenuResult) //

/*private */XALLBACK_IMPLEMENT_SFXTIMER(SFYMenu, OnTimer)
{
    SFYResponderSmp                             root;
    SFCError                                    error;

    error = SFERR_NO_ERROR;
    if ((root = GetRoot()) != null) {
        if (_state == STATE_FIRE) {
            _state = STATE_IDLE;
            _msec = 0;
            Invalidate();
            HandleEscapeKey();
            error = root->Render();
        }
    }
    else {
        error = SFERR_FAILED;
    }
    if (error != SFERR_NO_ERROR) {
        // internal fault!
    }
    return;
}// XALLBACK_IMPLEMENT_SFXTIMER(SFYMenu, OnTimer) //

参照

SFYResponder::SetType | SFYMenu::CodeEnum | SFYMenu::SetOperateKey | SFYMenu::HandleOperateKey | SFYMenu::SetEscapeKey | SFYMenu::HandleEscapeKey | SFYMenu::SetSelectUpKey | SFYMenu::HandleSelectUpKey | SFYMenu::SetSelectDownKey | SFYMenu::HandleSelectDownKey | SFYMenu::SetSelectLeftKey | SFYMenu::HandleSelectLeftKey | SFYMenu::SetSelectRightKey | SFYMenu::HandleSelectRightKey | SFYMenu::ScheduleTimer | SFXRGBColor | SFXEvent | タイプ | イベント | キーイベント[SFEVT_KEY] | 結果イベント[SFEVT_RESPONDER_RESULT] | アプリ中断イベント[SFEVT_APP_SUSPEND] | アプリ再開イベント[SFEVT_APP_RESUME]


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

解説

タイマーをキャンセルします。

内部実装

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

/*protected virtual */SFYMenu::~SFYMenu(Void)
{
    CancelTimer();
}// SFYMenu::~SFYMenu //

参照

SFYMenu::CancelTimer


SFYMenu::CancelTimer
タイマーをキャンセルします。
[ public ]
Void CancelTimer(Void);

解説

この関数は、SFYMenu::ScheduleTimer 関数によるタイマーの設定をキャンセルします。

参照

SFYMenu::ScheduleTimer | SFYMenu::RewindTimer


SFYMenu::GetEscapeKey
ESCAPE キーを取得します。
[ public, const ]
AVKType GetEscapeKey(Void);

戻り値

メニューの ESCAPE キー。

解説

この関数は、 SFYMenu::SetEscapeKey 関数で設定されたメニューの ESCAPE キーを取得します。

参照

SFYMenu::SetEscapeKey | AVKType


SFYMenu::GetOperateKey
操作キーを取得します。
[ public, const ]
AVKType GetOperateKey(Void);

戻り値

メニューの操作キー。

解説

この関数は、 SFYMenu::SetOperateKey 関数で設定されたメニューの操作キーを取得します。

参照

SFYMenu::SetOperateKey | AVKType


SFYMenu::GetSelectDownKey
DOWN キーを取得します。
[ public, const ]
AVKType GetSelectDownKey(Void);

戻り値

メニューの DOWN キー。

解説

この関数は、 SFYMenu::SetSelectDownKey 関数で設定されたメニューの DOWN キーを取得します。

参照

SFYMenu::SetSelectDownKey | AVKType


SFYMenu::GetSelectLeftKey
LEFT キーを取得します。
[ public, const ]
AVKType GetSelectLeftKey(Void);

戻り値

メニューの LEFT キー。

解説

この関数は、 SFYMenu::SetSelectLeftKey 関数で設定されたメニューの LEFT キーを取得します。

参照

SFYMenu::SetSelectLeftKey | AVKType


SFYMenu::GetSelectRightKey
RIGHT キーを取得します。
[ public, const ]
AVKType GetSelectRightKey(Void);

戻り値

メニューの RIGHT キー。

解説

この関数は、 SFYMenu::SetSelectRightKey 関数で設定されたメニューの RIGHT キーを取得します。

参照

SFYMenu::SetSelectRightKey | AVKType


SFYMenu::GetSelectUpKey
UP キーを取得します。
[ public, const ]
AVKType GetSelectUpKey(Void);

戻り値

メニューの UP キー。

解説

この関数は、 SFYMenu::SetSelectUpKey 関数で設定されたメニューの UP キーを取得します。

参照

SFYMenu::SetSelectUpKey | AVKType


SFYMenu::HandleBoundReal
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL) イベントを受信したときに呼び出される関数です (実領域が変化したときの処理を行います)。
[ protected, virtual ]
Void HandleBoundReal(Void);

解説

この関数は、 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL, rectangle)] を受信したときに呼び出されます。

開発者は、独自の処理のためにこの関数をオーバーライドできます。

デフォルトの実装は、仮想領域を実領域に一致させます。

[Note] 領域イベント[(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL) イベント]

SFYResponder::SetRealBound 関数は、この関数内の処理により実領域が変化すると、 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL, rectangle)] をレスポンダに送信します。

SFYWidget クラスを継承するレスポンダが領域イベントを受信すると、 SFYWidget::SFYWidget コンストラクタで最初に登録した領域イベント専用ハンドラの処理により、 SFYWidget::HandleBoundReal 仮想関数が呼び出されます。

※ 領域イベントの P32 パラメータ rectangle には変更後の実領域が設定されています。

[Note] 実領域が変化した時の処理

SFYWidget::HandleBoundReal 仮想関数をオーバーライドする以外に、 領域イベント専用ハンドラ[XANDLER_DECLARE_VOIDBOUND]を定義・実装し レスポンダに登録して行うことも可能です。

実領域の変更処理は、最初に SFYWidget::HandleBoundReal 仮想関数を実行し、 次に領域イベント専用ハンドラを登録した順に実行して行われます。

領域イベント専用ハンドラを宣言し登録する手間が省けるので、 通常は SFYWidget::HandleBoundReal 仮想関数をオーバーライドして処理を記述します。

内部実装

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

/*protected virtual */Void SFYMenu::HandleBoundReal(Void)
{
    SetVirtualBound(SFXRectangle(SFXGrid::ZeroInstance(), GetRealBound().GetSize()));
    return;
}// SFYMenu::HandleBoundReal //

参照

SFYResponder::SetRealBound | SFXEvent | 領域イベント[SFEVT_RESPONDER_BOUND]


SFYMenu::HandleEscapeKey
ESCAPE キーの SFEVT_KEY イベントを受信したとき、 または ScheduleTimer 関数で指定した時間が経過したときに呼び出される関数です。
[ protected, virtual ]
Void HandleEscapeKey(Void);

解説

この関数は、SFYMenu::SetEscapeKey 関数で設定した ESCAPE キーの SFEVT_KEY イベント (キーイベント[SFEVT_KEY])を受信したとき、 または SFYMenu::ScheduleTimer 関数で指定した時間が経過しても操作キーや ESCAPE キーが押下されなかったときに呼び出されます。

開発者は、独自の処理のためにこの関数をオーバーライドできます。

デフォルトの実装では、 結果イベント [SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_ESCAPE, 0)] を送信します。 そして、結果ハンドラが起動されます。

[Note] 注意
デフォルトの結果ハンドラの実装は、メニューを閉じます。

内部実装

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

/*protected virtual */Void SFYMenu::HandleEscapeKey(Void)
{
    InvokeForward(SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_ESCAPE, 0), false);
    return;
}// SFYMenu::HandleEscapeKey //

参照

SFYMenu::SetEscapeKey | SFYMenu::ScheduleTimer | SFYMenu::SetOperateKey | SFXEvent | 結果イベント[SFEVT_RESPONDER_RESULT] | キーイベント[SFEVT_KEY]


SFYMenu::HandleOperateKey
操作キーの SFEVT_KEY イベントを受信したときに呼び出される関数です。
[ protected, virtual ]
Void HandleOperateKey(Void);

解説

この関数は、SFYMenu::SetOperateKey 関数で設定した操作キーの SFEVT_KEY イベント (キーイベント[SFEVT_KEY])を受信したときに呼び出されます。

開発者は、独自の処理のためにこの関数をオーバーライドできます。

デフォルトの実装では、 結果イベント [SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_CANCEL, 0)] を送信します。 そして、結果ハンドラが起動されます。

[Note] 注意
デフォルトの結果ハンドラの実装は、メニューを閉じます。

内部実装

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

/*protected virtual */Void SFYMenu::HandleOperateKey(Void)
{
    InvokeForward(SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_CANCEL, 0), false);
    return;
}// SFYMenu::HandleOperateKey //

参照

SFYMenu::SetOperateKey | SFXEvent | 結果イベント[SFEVT_RESPONDER_RESULT] | キーイベント[SFEVT_KEY]


SFYMenu::HandleSelectDownKey
DOWN キーの SFEVT_KEY イベントを受信したときに呼び出される関数です。
[ protected, virtual ]
Void HandleSelectDownKey(Void);

解説

この関数は、SFYMenu::SetSelectDownKey 関数によって設定された DOWN キーの SFEVT_KEY イベント (キーイベント[SFEVT_KEY])を受信したときに呼び出されます。

開発者は、独自の処理のためにこの関数をオーバーライドできます。

デフォルトの実装では、何も処理しません。

内部実装

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

/*protected virtual */Void SFYMenu::HandleSelectDownKey(Void)
{
    return;
}// SFYMenu::HandleSelectDownKey //

参照

SFYMenu::SetSelectDownKey | SFXEvent | キーイベント[SFEVT_KEY]


SFYMenu::HandleSelectLeftKey
LEFT キーの SFEVT_KEY イベントを受信したときに呼び出される関数です。
[ protected, virtual ]
Void HandleSelectLeftKey(Void);

解説

この関数は、SFYMenu::SetSelectLeftKey 関数によって設定された LEFT キーの SFEVT_KEY イベント (キーイベント[SFEVT_KEY])を受信したときに呼び出されます。

開発者は、独自の処理のためにこの関数をオーバーライドできます。

デフォルトの実装では、何も処理しません。

内部実装

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

/*protected virtual */Void SFYMenu::HandleSelectLeftKey(Void)
{
    return;
}// SFYMenu::HandleSelectLeftKey //

参照

SFYMenu::SetSelectLeftKey | SFXEvent | キーイベント[SFEVT_KEY]


SFYMenu::HandleSelectRightKey
RIGHT キーの SFEVT_KEY イベントを受信したときに呼び出される関数です。
[ protected, virtual ]
Void HandleSelectRightKey(Void);

解説

この関数は、SFYMenu::SetSelectRightKey 関数によって設定された RIGHT キーの SFEVT_KEY イベント (キーイベント[SFEVT_KEY])を受信したときに呼び出されます。

開発者は、独自の処理のためにこの関数をオーバーライドできます。

デフォルトの実装では、何も処理しません。

内部実装

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

/*protected virtual */Void SFYMenu::HandleSelectRightKey(Void)
{
    return;
}// SFYMenu::HandleSelectRightKey //

参照

SFYMenu::SetSelectRightKey | SFXEvent | キーイベント[SFEVT_KEY]


SFYMenu::HandleSelectUpKey
UP キーの SFEVT_KEY イベントを受信したときに呼び出される関数です。
[ protected, virtual ]
Void HandleSelectUpKey(Void);

解説

この関数は、SFYMenu::SetSelectUpKey 関数によって設定された UP キーの SFEVT_KEY イベント (キーイベント[SFEVT_KEY])を受信したときに呼び出されます。

開発者は、独自の処理のためにこの関数をオーバーライドできます。

デフォルトの実装では、何も処理しません。

内部実装

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

/*protected virtual */Void SFYMenu::HandleSelectUpKey(Void)
{
    return;
}// SFYMenu::HandleSelectUpKey //

参照

SFYMenu::SetSelectUpKey | SFXEvent | キーイベント[SFEVT_KEY]


SFYMenu::RewindTimer
メニューが自動的に閉じるまでの時間を再設定します。
[ public ]
Void RewindTimer(Void);

解説

この関数は、 メニューが自動的に閉じるまでの時間を、前回 SFYMenu::ScheduleTimer 関数で設定された時間に再設定します。

参照

SFYMenu::ScheduleTimer | SFYMenu::CancelTimer


SFYMenu::ScheduleTimer
指定時間経過後に、 ESCAPE キー押下と同等の処理が行われるようにタイマーをスケジュールします。
[ public ]
Void ScheduleTimer(
    UInt32 param   // 設定する時間
);

解説

この関数は、 引数に指定した時間が経過しても操作キーまたは ESCAPE キーが押下されなかった場合、 ESCAPE キーを押下したときと同等の処理が行われるようにタイマーをスケジュールします。[単位:ミリ秒]

[Tip] タイマー処理コールバックの登録と解除

指定した時間が経過すると、 SFYMenu::HandleEscapeKey 関数を呼び出し、 画面を再描画するタイマー処理コールバックを登録します。

指定した時間の経過するまでに、 SFYMenu::SetOperateKey 関数で設定する操作キー、または SFYMenu::SetEscapeKey 関数で設定する ESCAPE キーが押下されると、 このタイマー処理コールバックをキャンセルします。

サスペンド時にこのタイマー処理コールバックが登録されていると、 自動的に解除し、レジューム時に再び登録します。

その他、メニューの有効状態が無効になったときにこのタイマー処理コールバックが登録されていると、 自動的に解除します。

参照

SFYMenu::HandleEscapeKey | SFYMenu::CancelTimer | SFYMenu::RewindTimer | SFYMenu::SetOperateKey | SFYMenu::SetEscapeKey | 状態


SFYMenu::SetEscapeKey
ESCAPE キーを設定します。
[ public ]
Void SetEscapeKey(
    AVKType param   // 設定するキー
);

解説

この関数は、メニューの ESCAPE キーを設定します。

この関数で設定されたキーの SFEVT_KEY イベントが発生すると、 SFYMenu::HandleEscapeKey 関数が実行されます。

デフォルト値: AVK_CLR

参照

SFYMenu::HandleEscapeKey | SFYMenu::GetEscapeKey | AVKType


SFYMenu::SetOperateKey
操作キーを設定します。
[ public ]
Void SetOperateKey(
    AVKType param   // 設定するキー
);

解説

この関数は、メニューの操作キーを設定します。

この関数で設定されたキーの SFEVT_KEY イベントが発生すると、 SFYMenu::HandleOperateKey 関数が実行されます。

デフォルト値: AVK_SELECT

参照

SFYMenu::HandleOperateKey | SFYMenu::GetOperateKey | AVKType


SFYMenu::SetSelectDownKey
DOWN キーを設定します。
[ public ]
Void SetSelectDownKey(
    AVKType param   // 設定するキー
);

解説

この関数は、メニューの DOWN キーを設定します。

この関数で設定されたキーの SFEVT_KEY イベントが発生すると、 SFYMenu::HandleSelectDownKey 関数が実行されます。

デフォルト値: AVK_DOWN

参照

SFYMenu::HandleSelectDownKey | SFYMenu::GetSelectDownKey | AVKType


SFYMenu::SetSelectLeftKey
LEFT キーを設定します。
[ public ]
Void SetSelectLeftKey(
    AVKType param   // 設定するキー
);

解説

この関数は、メニューの LEFT キーを設定します。

この関数で設定されたキーの SFEVT_KEY イベントが発生すると、 SFYMenu::HandleSelectLeftKey 関数が実行されます。

デフォルト値: AVK_LEFT

参照

SFYMenu::HandleSelectLeftKey | SFYMenu::GetSelectLeftKey | AVKType


SFYMenu::SetSelectRightKey
RIGHT キーを設定します。
[ public ]
Void SetSelectRightKey(
    AVKType param   // 設定するキー
);

解説

この関数は、メニューの RIGHT キーを設定します。

この関数で設定されたキーの SFEVT_KEY イベントが発生すると、 SFYMenu::HandleSelectRightKey 関数が実行されます。

デフォルト値: AVK_RIGHT

参照

SFYMenu::HandleSelectRightKey | SFYMenu::GetSelectRightKey | AVKType


SFYMenu::SetSelectUpKey
UP キーを設定します。
[ public ]
Void SetSelectUpKey(
    AVKType param   // 設定するキー
);

解説

この関数は、メニューの UP キーを設定します。

この関数で設定されたキーの SFEVT_KEY イベントが発生すると、 SFYMenu::HandleSelectUpKey 関数が実行されます。

デフォルト値: AVK_UP

参照

SFYMenu::HandleSelectUpKey | SFYMenu::GetSelectUpKey | AVKType


SFYMenu::CodeEnum
SFYMenu クラスを表す定数です。
enum CodeEnum {
    CODE_TYPE = four_char_code('.', 'm', 'n', 'u')
};
SFMTYPEDEFTYPE(CodeEnum)

参照

SFYResponder::GetType | SFYResponder::SetType