SophiaFramework UNIVERSE 5.3 |
SFYMenu は、各種メニューを実装するための起点となります。
たとえば、 SFZTextMenu や SFZGridMenu などのメニューは、 SFYMenu クラスを継承して実装しています。
SFYMenu は、 一定時間経過後に自動的にメニューを閉じる機能と、 操作キーや選択キー、ESCAPE キーの管理を実装し、 いくつかの仮想関数(ハンドラ)の動作をデフォルトで実装します。
デフォルトの実装では、 抽象メニュー[SFYMenu]は 下記の結果イベント[SFEVT_RESPONDER_RESULT]を受信します。
開発者は、これらのイベントを受信するハンドラを登録できます。
ハンドラを登録しない場合、上記結果イベントを受信するとデフォルトのハンドラが起動されます。 デフォルトのハンドラは、メニューを閉じる処理だけを行います。
操作キーは、SFYMenu::SetOperateKey 関数を使用して設定します。 デフォルトでは、セレクトキーが操作キーとして割り当てられています。
ESCAPE キーは、SFYMenu::SetEscapeKey 関数を使用して設定します。 デフォルトでは、クリアキーが ESCAPE キーとして割り当てられています。
タイマーのキャンセル | |
---|---|
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 コンストラクタで登録されたハンドラの処理により、 下記のイベントを受信すると、対応する下記の仮想関数(ハンドラ)が最初に呼び出されます。 その後、開発者がレスポンダに登録したハンドラが呼び出されることになります。
注意 | |
---|---|
ハンドラの詳細については、 SFYMenu::SFYMenu / SFYWidget::SFYWidget コンストラクタの解説を参照してください。 |
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 | − | 任意 |
※デフォルトの動作にある "−" は何も実装していないことを表す。
注釈 | |
---|---|
※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 から継承)
垂直方向のアライメントを表す定数です。
|
[ protected, explicit ] SFYMenu(Void);
このコンストラクタは、以下の初期化処理を行います。
表 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] | 指定時間経過後に閉じるためのタイマー処理を再開します。 |
注意 | |
---|---|
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]
[ protected, virtual ] virtual ~SFYMenu(Void);
タイマーをキャンセルします。
このデストラクタの内部実装は以下の通りです。
/*protected virtual */SFYMenu::~SFYMenu(Void) { CancelTimer(); }// SFYMenu::~SFYMenu //
[ public ] Void CancelTimer(Void);
この関数は、SFYMenu::ScheduleTimer 関数によるタイマーの設定をキャンセルします。
[ public, const ] AVKType GetEscapeKey(Void);
メニューの ESCAPE キー。
この関数は、 SFYMenu::SetEscapeKey 関数で設定されたメニューの ESCAPE キーを取得します。
[ public, const ] AVKType GetOperateKey(Void);
メニューの操作キー。
この関数は、 SFYMenu::SetOperateKey 関数で設定されたメニューの操作キーを取得します。
[ public, const ] AVKType GetSelectDownKey(Void);
メニューの DOWN キー。
この関数は、 SFYMenu::SetSelectDownKey 関数で設定されたメニューの DOWN キーを取得します。
[ public, const ] AVKType GetSelectLeftKey(Void);
メニューの LEFT キー。
この関数は、 SFYMenu::SetSelectLeftKey 関数で設定されたメニューの LEFT キーを取得します。
[ public, const ] AVKType GetSelectRightKey(Void);
メニューの RIGHT キー。
この関数は、 SFYMenu::SetSelectRightKey 関数で設定されたメニューの RIGHT キーを取得します。
[ public, const ] AVKType GetSelectUpKey(Void);
メニューの UP キー。
この関数は、 SFYMenu::SetSelectUpKey 関数で設定されたメニューの UP キーを取得します。
[ protected, virtual ] Void HandleBoundReal(Void);
この関数は、 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL, rectangle)] を受信したときに呼び出されます。
開発者は、独自の処理のためにこの関数をオーバーライドできます。
デフォルトの実装は、仮想領域を実領域に一致させます。
領域イベント[(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL) イベント] | |
---|---|
SFYResponder::SetRealBound 関数は、この関数内の処理により実領域が変化すると、 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL, rectangle)] をレスポンダに送信します。 SFYWidget クラスを継承するレスポンダが領域イベントを受信すると、 SFYWidget::SFYWidget コンストラクタで最初に登録した領域イベント専用ハンドラの処理により、 SFYWidget::HandleBoundReal 仮想関数が呼び出されます。 ※ 領域イベントの P32 パラメータ rectangle には変更後の実領域が設定されています。 |
実領域が変化した時の処理 | |
---|---|
SFYWidget::HandleBoundReal 仮想関数をオーバーライドする以外に、 領域イベント専用ハンドラ[XANDLER_DECLARE_VOIDBOUND]を定義・実装し レスポンダに登録して行うことも可能です。 実領域の変更処理は、最初に SFYWidget::HandleBoundReal 仮想関数を実行し、 次に領域イベント専用ハンドラを登録した順に実行して行われます。 領域イベント専用ハンドラを宣言し登録する手間が省けるので、 通常は SFYWidget::HandleBoundReal 仮想関数をオーバーライドして処理を記述します。 |
この関数の内部実装は以下の通りです。
/*protected virtual */Void SFYMenu::HandleBoundReal(Void) { SetVirtualBound(SFXRectangle(SFXGrid::ZeroInstance(), GetRealBound().GetSize())); return; }// SFYMenu::HandleBoundReal //
[ protected, virtual ] Void HandleEscapeKey(Void);
この関数は、SFYMenu::SetEscapeKey 関数で設定した ESCAPE キーの SFEVT_KEY イベント (キーイベント[SFEVT_KEY])を受信したとき、 または SFYMenu::ScheduleTimer 関数で指定した時間が経過しても操作キーや ESCAPE キーが押下されなかったときに呼び出されます。
開発者は、独自の処理のためにこの関数をオーバーライドできます。
デフォルトの実装では、 結果イベント [SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_ESCAPE, 0)] を送信します。 そして、結果ハンドラが起動されます。
注意 | |
---|---|
デフォルトの結果ハンドラの実装は、メニューを閉じます。 |
この関数の内部実装は以下の通りです。
/*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]
[ protected, virtual ] Void HandleOperateKey(Void);
この関数は、SFYMenu::SetOperateKey 関数で設定した操作キーの SFEVT_KEY イベント (キーイベント[SFEVT_KEY])を受信したときに呼び出されます。
開発者は、独自の処理のためにこの関数をオーバーライドできます。
デフォルトの実装では、 結果イベント [SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_CANCEL, 0)] を送信します。 そして、結果ハンドラが起動されます。
注意 | |
---|---|
デフォルトの結果ハンドラの実装は、メニューを閉じます。 |
この関数の内部実装は以下の通りです。
/*protected virtual */Void SFYMenu::HandleOperateKey(Void) { InvokeForward(SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_CANCEL, 0), false); return; }// SFYMenu::HandleOperateKey //
[ protected, virtual ] Void HandleSelectDownKey(Void);
この関数は、SFYMenu::SetSelectDownKey 関数によって設定された DOWN キーの SFEVT_KEY イベント (キーイベント[SFEVT_KEY])を受信したときに呼び出されます。
開発者は、独自の処理のためにこの関数をオーバーライドできます。
デフォルトの実装では、何も処理しません。
この関数の内部実装は以下の通りです。
/*protected virtual */Void SFYMenu::HandleSelectDownKey(Void) { return; }// SFYMenu::HandleSelectDownKey //
[ protected, virtual ] Void HandleSelectLeftKey(Void);
この関数は、SFYMenu::SetSelectLeftKey 関数によって設定された LEFT キーの SFEVT_KEY イベント (キーイベント[SFEVT_KEY])を受信したときに呼び出されます。
開発者は、独自の処理のためにこの関数をオーバーライドできます。
デフォルトの実装では、何も処理しません。
この関数の内部実装は以下の通りです。
/*protected virtual */Void SFYMenu::HandleSelectLeftKey(Void) { return; }// SFYMenu::HandleSelectLeftKey //
[ protected, virtual ] Void HandleSelectRightKey(Void);
この関数は、SFYMenu::SetSelectRightKey 関数によって設定された RIGHT キーの SFEVT_KEY イベント (キーイベント[SFEVT_KEY])を受信したときに呼び出されます。
開発者は、独自の処理のためにこの関数をオーバーライドできます。
デフォルトの実装では、何も処理しません。
この関数の内部実装は以下の通りです。
/*protected virtual */Void SFYMenu::HandleSelectRightKey(Void) { return; }// SFYMenu::HandleSelectRightKey //
[ protected, virtual ] Void HandleSelectUpKey(Void);
この関数は、SFYMenu::SetSelectUpKey 関数によって設定された UP キーの SFEVT_KEY イベント (キーイベント[SFEVT_KEY])を受信したときに呼び出されます。
開発者は、独自の処理のためにこの関数をオーバーライドできます。
デフォルトの実装では、何も処理しません。
この関数の内部実装は以下の通りです。
/*protected virtual */Void SFYMenu::HandleSelectUpKey(Void) { return; }// SFYMenu::HandleSelectUpKey //
[ public ] Void RewindTimer(Void);
この関数は、 メニューが自動的に閉じるまでの時間を、前回 SFYMenu::ScheduleTimer 関数で設定された時間に再設定します。
この関数は、 引数に指定した時間が経過しても操作キーまたは ESCAPE キーが押下されなかった場合、 ESCAPE キーを押下したときと同等の処理が行われるようにタイマーをスケジュールします。[単位:ミリ秒]
タイマー処理コールバックの登録と解除 | |
---|---|
指定した時間が経過すると、 SFYMenu::HandleEscapeKey 関数を呼び出し、 画面を再描画するタイマー処理コールバックを登録します。 指定した時間の経過するまでに、 SFYMenu::SetOperateKey 関数で設定する操作キー、または SFYMenu::SetEscapeKey 関数で設定する ESCAPE キーが押下されると、 このタイマー処理コールバックをキャンセルします。 サスペンド時にこのタイマー処理コールバックが登録されていると、 自動的に解除し、レジューム時に再び登録します。 その他、メニューの有効状態が無効になったときにこのタイマー処理コールバックが登録されていると、 自動的に解除します。 |
SFYMenu::HandleEscapeKey | SFYMenu::CancelTimer | SFYMenu::RewindTimer | SFYMenu::SetOperateKey | SFYMenu::SetEscapeKey | 状態
この関数は、メニューの ESCAPE キーを設定します。
この関数で設定されたキーの SFEVT_KEY イベントが発生すると、 SFYMenu::HandleEscapeKey 関数が実行されます。
デフォルト値: AVK_CLR
この関数は、メニューの操作キーを設定します。
この関数で設定されたキーの SFEVT_KEY イベントが発生すると、 SFYMenu::HandleOperateKey 関数が実行されます。
デフォルト値: AVK_SELECT
この関数は、メニューの DOWN キーを設定します。
この関数で設定されたキーの SFEVT_KEY イベントが発生すると、 SFYMenu::HandleSelectDownKey 関数が実行されます。
デフォルト値: AVK_DOWN
この関数は、メニューの LEFT キーを設定します。
この関数で設定されたキーの SFEVT_KEY イベントが発生すると、 SFYMenu::HandleSelectLeftKey 関数が実行されます。
デフォルト値: AVK_LEFT
この関数は、メニューの RIGHT キーを設定します。
この関数で設定されたキーの SFEVT_KEY イベントが発生すると、 SFYMenu::HandleSelectRightKey 関数が実行されます。
デフォルト値: AVK_RIGHT
この関数は、メニューの UP キーを設定します。
この関数で設定されたキーの SFEVT_KEY イベントが発生すると、 SFYMenu::HandleSelectUpKey 関数が実行されます。
デフォルト値: AVK_UP
enum CodeEnum { CODE_TYPE = four_char_code('.', 'm', 'n', 'u') }; SFMTYPEDEFTYPE(CodeEnum)
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |