SophiaFramework UNIVERSE 5.3 |
#include <SFZSoftKeyControl.h.hpp>
class SFZSoftKeyControl : public SFYControl;
SFMTYPEDEFCLASS(SFZSoftKeyControl)
■ 仕様と使い方
ソフトキーコントロール(SFZSoftKeyControl)は、 ソフトキーのキーイベントを処理するコントロールです。 このコントロールは、画面最下部にソフトキーメニューを表示し、ソフトキーのキーイベント[SFEVT_KEY]を受信すると、 現在表示されているソフトキーメニューに関連付けられているレスポンダにソフトキーイベント[SFEVT_RESPONDER_SOFTKEY]を送信します。
ソフトキーコントロールには、以下の 2 種類が存在します。 (標準スタイルがデフォルトです)
表記上の注意 | |
---|---|
SFZSoftKeyControl クラスの説明では、ラベルはソフトキーラベル、メニューはソフトキーメニューを意味します。 |
■ ソフトキーコントロールのレイアウト
標準スタイル:
拡張スタイル:
ソフトキーコントロールの背景色 | |
---|---|
ソフトキーコントロール(SFZSoftKeyControl)のデフォルトの背景色は、 SFXRGBColor(0xCC, 0xCC, 0xCC, 0x00) [灰色]です。 この背景色は、SFYWidget::SetBackgroundColor 関数を使用して変更可能です。 |
■ ソフトキーコントロールの機能
『テキスト、画像、3 色』の要素 | |
---|---|
ソフトキーメニューを構成する各種ラベルに関する 『テキスト、画像、3 色』の要素は、 固有のキーで管理され、複数のラベル間で共有できます。 3 色とは、フレーム色、前景色、および背景色を表します。 |
アクティブレスポンダ | |
---|---|
『アクティブレスポンダ』とは、 ソフトキーメニューにバインドされた、 フォーカス状態にあるレスポンダの中で、 最前面に配置されているレスポンダのことです。 ソフトキーメニューにバインドされたフォーカス状態にあるレスポンダが 1 つ以上存在する場合、 つまり、『アクティブレスポンダ』が存在する場合、ソフトキーコントロールは『アクティブ』であると呼びます。 |
アクティブメニュー | |
---|---|
『アクティブメニュー』とは、 『アクティブレスポンダ』にバインドされたソフトキーメニューのことです。 |
■ SFZSoftKeyControl クラスの使い方
以下、window1 と window2 という 2 つのウィンドウを持つ application というアプリケーションクラスについて説明します。
ソフトキーコントロールのインスタンスを生成します。
// 1 アプリにつき 1 つのソフトキーコントロールを作成する
_softkey = SFZSoftKeyControl::NewInstance(&error);
ソフトキーコントロールの親レスポンダを application が内部で保持するルートに設定します。 このとき、ソフトキーコントロールはルートの子レスポンダの中で常に最前面になるように自動配置されます。
// 親レスポンダはアプリケーションクラスが内部で保持するルートに設定する
_softkey->SetParent(GetThis());
ソフトキーコントロールのスタイルを標準スタイル[デフォルト]または拡張スタイルに設定します。
// スタイルを拡張スタイルに設定する
_softkey->SetStyle(SFZSoftKeyControl::EXTENSION);
ソフトキーコントロールの実領域を SFYResponder::GetSuitableBound() の戻り値に設定します。
// 実領域は SFYResponder::GetSuitableBound() の戻り値に設定する // ※ ソフトキーコントロールのスタイルに応じて携帯電話の画面最下部に最適な実領域が自動計算される _softkey->SetRealBound(_softkey->GetSuitableBound());
注意事項 | |
---|---|
ソフトキーコントロールでは、 SFYResponder::GetSuitableBound 関数は、 引数に矩形領域が指定されても無視します。 また、他のレスポンダの SFYResponder::GetSuitableBound 関数は最適なサイズだけを返しますが、 ソフトキーコントロールの場合、 最適なサイズの他に最適な始点も返します。 従って、実領域の始点を設定する必要はありません。 |
ソフトキーコントロールの状態を「可視+活性+操作不能+非フォーカス」に設定します。
// 状態を「可視+活性+操作不能+非フォーカス」に設定する
_softkey->SetState(true, true, false, false);
ラベルの要素(テキスト、画像、3 色)を登録します。
注意 | |
---|---|
ラベルの要素(テキスト、画像、3 色)は、固有のキーで管理され、複数のラベル間で共有できます。 |
// ラベルの要素(テキスト、画像、3 色)を登録する // ※ 3 色(フレーム色、前景色、背景色)は、同じキー "KEY_COLOR" で登録する _softkey->RegisterText(KEY_TEXT, text); // テキスト _softkey->RegisterImage(KEY_IMAGE, image); // 画像 _softkey->RegisterFrameColor(KEY_COLOR, colorFrame); // フレーム色 _softkey->RegisterForeColor(KEY_COLOR, colorFore); // 前景色 _softkey->RegisterBackColor(KEY_COLOR, colorBack); // 背景色
ソフトキーメニューを作成します。
注意 | |
---|---|
ソフトキーメニューは、固有のキーで管理され、複数のレスポンダ間で共有できます。 |
// ソフトキーメニューを作成する
_softkey->CreateMenu(KEY_MENU);
ソフトキーメニューのラベルについて、 要素(テキスト、画像、3 色)のキーを設定します。
// ソフトキー 1 のラベルについて、テキスト、要素(テキスト、画像、3 色)のキーを設定する
_softkey->SetTextKey(KEY_MENU, SFZSoftKeyControl::SOFTKEY_1, KEY_TEXT);
_softkey->SetImageKey(KEY_MENU, SFZSoftKeyControl::SOFTKEY_1, KEY_IMAGE);
_softkey->SetColorKey(KEY_MENU, SFZSoftKeyControl::SOFTKEY_1, KEY_COLOR);
window1 のコンストラクタでは、以下の処理を行います。
注意 | |
---|---|
SFZWindow や SFZTextMenu などの SophiaFramework UNIVERSE 標準レスポンダの場合は、外部から同様の処理を行います。 |
ソフトキーコントロールのインスタンスを取得します。
// ソフトキーコントロールのインスタンスを取得する
_softkey = USRApplication::GetSoftKey();
注意 | |
---|---|
USRApplication::GetSoftKey() はソフトキーコントロールのインスタンスを取得するためのユーザー定義関数です。 |
window1 をソフトキーコントロールのソフトキーメニューにバインドします。
// ウィンドウをソフトキーコントロールのソフトキーメニューにバインドする
_softkey->Bind(GetThis(), MENU_KEY);
window1 にソフトキーイベント[SFEVT_RESPONDER_SOFTKEY]のハンドラを登録します。
注意 | |
---|---|
ソフトキーイベントのハンドラ OnSoftkey の宣言と実装も必要です |
// ソフトキーイベントのハンドラを登録する RegisterHandler( SFXEventRange(SFEVT_RESPONDER_SOFTKEY, SFEVT_RESPONDER_SOFTKEY, AVK_SOFT1, AVK_SOFT4), XANDLER_INTERNAL(OnSoftkey) ); // ※ソフトキーイベントのハンドラ OnSoftkey の宣言と実装も必要
window1 のソフトキーメニューを表示する必要がなくなればアンバインドします。
// ソフトキーコントロールからウィンドウをアンバインドする // バインドされたレスポンダが無効になれば自動的にアンバイドされるので省略可能 _softkey->UnBind(GetThis());
ソフトキーコントロールの仕組み | |
---|---|
ソフトキーコントロールでは、 1 つのソフトキーメニューを複数のレスポンダに関連付けることが可能です。 バインドされている何れかのレスポンダがフォーカス状態にあるとき、 ソフトキーコントロールは『アクティブ』であると呼びます。 そして、その中で最前面にあるレスポンダを『アクティブレスポンダ』と呼びます。 画面には、『アクティブレスポンダ』に関連付けられているソフトキーメニュー (『アクティブメニュー』と呼ぶ)が表示されます。 ソフトキーコントロールは、 ソフトキー 1 〜 4 のキーイベント[SFEVT_KEY]を受信し、 それをソフトキーイベント[SFEVT_RESPONDER_SOFTKEY]として 『アクティブレスポンダ』に送信します。 ソフトキーコントロールが『アクティブ』でない場合、 ソフトキーイベント[SFEVT_RESPONDER_SOFTKEY] はいずれのレスポンダにも送信されません。 このとき、画面にはメニューキー "0" で登録されている『デフォルトメニュー』が表示されます。 ※ソフトキーコントロールは、セレクトキーや上下左右キーのキーイベントを処理しません。 |
デフォルトメニュー | |
---|---|
デフォルトメニューとは、 ソフトキーコントロールが『アクティブ』でない、 つまり、『アクティブレスポンダ』が存在しない場合に表示されるデフォルトのソフトキーメニューのことです。 デフォルトメニューは、 ソフトキーコントロールのインスタンス生成時に自動的に作成され、メニューキー "0" で登録されています。 デフォルトメニューの初期値は、以下の通りです。
※1. 上記の初期値は、 SFZSoftKeyControl::SetTextKey / SFZSoftKeyControl::SetImageKey / SFZSoftKeyControl::SetColorKey 関数を使用して、 メニューキー "0" の各ラベルに関する『テキスト、画像、3 色』の要素のキーを設定することにより変更できます。 ※2. ラベルの有効状態は、デフォルト設定では有効("true")であるため、そのままではラベル領域は表示されます。 ラベル領域を非表示にするには、 SFZSoftKeyControl::SetEnable 関数を使用して有効状態を無効("false")に設定する必要があります。 |
ソフトキーイベント | |
---|---|
ソフトキーコントロールの親レスポンダをルート (SFZRoot)に設定すると、 下記の配信規則がルートのトレーサに自動登録されます。 // ソフトキーコントロールの親レスポンダをルートに設定した際に // ルートのトレーサに自動登録される配信規則 root->RegisterTracer( SFXEventRange(SFEVT_KEY, SFEVT_KEY, AVK_SOFT1, AVK_SOFT4), SFYTracer::ORDER_FORWARD, SFYTracer::STATE_ALL, false ); この配信規則の意味は、以下の通りです。
ソフトキーコントロールはルート内で最前面に配置されるレスポンダなので、 ルートの次にソフトキー 1 〜 4 のキーイベントを受信します。 『アクティブ』であるソフトキーコントロールは、ソフトキー 1 〜 4 のキーイベントを受信し、 『アクティブレスポンダ』へソフトキーイベント[SFEVT_RESPONDER_SOFTKEY]を送信する処理を行います。 『アクティブ』でないソフトキーコントロールは、 ソフトキー 1 〜 4 のキーイベントを受信しますが、どのレスポンダにもソフトキーイベントを送信しない処理を行います("true" を返すだけの処理を行います)。 ※『アクティブ』の如何を問わず、 ソフトキーコントロールはソフトキー 1 〜 4 のキーイベントを処理します。 従って、ルートを除き、他のレスポンダがソフトキー 1 〜 4 のキーイベントを受信することはありません。 |
例 907. アプリケーションクラスでのソフトキーコントロールの作成
// screensaver_sfy アプリケーションクラスの定義 SFMTYPEDEFCLASS(screensaver_sfy) class screensaver_sfy: public SFYApplication { SFMSEALCOPY(screensaver_sfy) private: SFZSoftKeyControlSmp _softkey; // ソフトキーコントロールはアプリケーションクラスのメンバ変数として保持する MainWindowSmp _main; public: static SFCInvokerPtr Factory(Void); static SFZSoftKeyControlSmp GetSoftKey(Void); private: explicit screensaver_sfy(Void) static_throws; virtual ~screensaver_sfy(Void); XANDLER_DECLARE_VOIDRENDER(OnRenderRequest) }; // screensaver_sfy アプリケーションクラスのコンストラクタ screensaver_sfy::screensaver_sfy(Void) static_throws { SFCError error; if (static_try()) { // ...(省略)... if (static_try()) { // ソフトキーコントロールを作成する // ※ アプリケーションクラスはソフトキーコントロールを 1 つまで保持できる _softkey = SFZSoftKeyControl::NewInstance(&error); if (_softkey != null) { // ソフトキーコントロールの各種設定を行う // 親レスポンダをルートに設定する // ※1. ソフトキーコントロールの親レスポンダはルートでなければいけない // ※2. 内部処理によりソフトキーコントロールは常に最前面に配置される // ※3. ソフトキーコントロールはルートの次にソフトキー 1 〜 4 のキーイベントを受信する error = _softkey->SetParent(GetThis()); if (error == SFERR_NO_ERROR) { // スタイルを『拡張スタイル』に設定する _softkey->SetStyle(SFZSoftKeyControl::EXTENSION); // GetSuitableBound 関数を使用して実領域を設定する // ★ソフトキーコントロール固有の GetSuitableBound() の仕様 // ※1. 引数には何も指定しない(指定しても無視される) // ※2. 最適な始点の位置も自動計算される _softkey->SetRealBound(_softkey->GetSuitableBound()); // 状態を「可視+活性+操作不能+非フォーカス」に設定する _softkey->SetState(true, true, false, false); // _softkey->ToFront(); // 自動的に実行されるので不要 // 要素(テキスト、画像、3 色)を登録する // ※1. 要素はソフトキーメニューの使用前に登録する // ※2. 登録しなかった画像と 3 色は、デフォルト設定となる _softkey->RegisterText(IDS_SK_EXIT, SFXWideString("終了")); _softkey->RegisterText(IDS_SK_EDIT, SFXWideString("設定")); _softkey->RegisterText(IDS_SK_ADD, SFXWideString("追加")); _softkey->RegisterText(IDS_SK_CHANGE, SFXWideString("変更")); _softkey->RegisterText(IDS_SK_REMOVE, SFXWideString("削除")); // ※リソースファイルからの一括登録も可能 // _softkey->RegisterTextRange( // IDS_SK_EXIT, SFXPath(SCREENSAVER_SFY_RES_FILE), IDS_SK_EXIT, IDS_SK_REMOVE // ); } } } // MainWindow を作成する if (error == SFERR_NO_ERROR) { _main = MainWindow::NewInstance(&error); // ...(省略)... } // ...(省略)... } } // ソフトキーコントロールを取得する関数の実装 SFZSoftKeyControlSmp screensaver_sfy::GetSoftKey(Void) { return static_cast<screensaver_sfyPtr>(GetInstance())->_softkey; }
例 908. レスポンダクラスでのソフトキーコントロールの設定
// MainWindow の定義 SFMTYPEDEFRESPONDER(MainWindow) class MainWindow: public SFZWindow { SFMSEALRESPONDER(MainWindow) SFMRESPONDERINSTANTIATEFOUR(MainWindow, SFZWindow, SFYContainer, SFYWidget, SFYResponder) public: // ...(省略)... private: SFZSoftKeyControlSmp _softkey;// ソフトキーコントロール // ...(省略)... private: XANDLER_DECLARE_VOIDEVENT(OnKey) // キーハンドラ XANDLER_DECLARE_VOIDEVENT(OnSoftkey) // ソフトキーハンドラ // ...(省略)... }; // MainWindow のコンストラクタ MainWindow::MainWindow(Void) static_throws { static SFXEventRange::AtomRecConst range[] = { { SFEVT_APP_SUSPEND, SFEVT_APP_SUSPEND, SFP16_BEGIN, SFP16_END }, { SFEVT_APP_RESUME, SFEVT_APP_RESUME, SFP16_BEGIN, SFP16_END }, // 通常のキーイベント { SFEVT_KEY, SFEVT_KEY, SFP16_BEGIN, SFP16_END }, // ソフトキーコントロールが送信するソフトキーイベント[SFEVT_RESPONDER_SOFTKEY] // ソフトキーのキーイベントは、ソフトキーイベント[SFEVT_RESPONDER_SOFTKEY]に変換される { SFEVT_RESPONDER_SOFTKEY, SFEVT_RESPONDER_SOFTKEY, AVK_SOFT1, AVK_SOFT4 } }; SFYHandler::RuleRec rule[lengthof(range)]; if (static_try()) { SetType(CODE_TYPE); rule[0].spp = XANDLER_FUNCTION(OnSuspend); rule[0].reference = this; rule[1].spp = XANDLER_FUNCTION(OnResume); rule[1].reference = this; // キーハンドラ rule[2].spp = XANDLER_FUNCTION(OnKey); rule[2].reference = this; // ソフトキーハンドラ rule[3].spp = XANDLER_FUNCTION(OnSoftkey); rule[3].reference = this; // ハンドラの登録 static_throw(RegisterHandler(atomic_cast(range), rule, lengthof(range))); // ソフトキーコントロールのインスタンスを取得する if ((_softkey = screensaver_sfy::GetSoftKey()) != null) { if (!_softkey->ContainsMenuKey(MENUID_MAIN)) { // 固有のキー MENUID_MAIN に対応するソフトキーメニューが作成されていなければ、 // ソフトキーメニューを作成する _softkey->CreateMenu(MENUID_MAIN); // ソフトキーメニューの各要素のキーを設定する // ※1. 要素はアプリケーションクラスのコンストラクタ内で登録済み // ※2. 左から SELECT, SOFTKEY_1, SOFTKEY_2, SOFTKEY_3, SOFTKEY_4 のラベルに対応する UInt32 keyText[] = { IDS_SK_ADD, IDS_SK_EXIT, IDS_SK_EDIT, IDS_SK_CHANGE, IDS_SK_REMOVE }; _softkey->SetTextKey(MENUID_MAIN, keyText, lengthof(keyText)); } // MainWindow にソフトキーメニューを関連付ける _softkey->Bind(this, MENUID_MAIN); // "_softkey->Bind(GetThis(), MENUID_MAIN);" と記述しても良いが、パフォーマンスがやや悪くなる } } }
例 909. ソフトキーイベントのハンドラの実装
// MainWindow のソフトキーイベントのハンドラの実装: // ※ MainWindow は、アクティブレスポンダのときにしかソフトキーイベントを受信しない XANDLER_IMPLEMENT_VOIDEVENT(MainWindow, OnSoftkey, invoker, event) { // ...(省略)... switch (event.GetP16()) { case AVK_SOFT1: // 終了確認ダイアログの作成 // ...(省略)... break; case AVK_SOFT2: // メニューの作成 // ................. break; case AVK_SOFT3: // 変更処理 // ...(省略)... break; case AVK_SOFT4: // 削除処理 // ...(省略)... break; } return; }
□実行結果
コンストラクタ/デストラクタ |
---|
SFZSoftKeyControl( Void ) SFZSoftKeyControl クラスのコンストラクタです。
|
~SFZSoftKeyControl( Void )
SFZSoftKeyControl クラスのデストラクタです。
|
パブリック関数 | |
---|---|
SFCError |
Bind(
SFYResponderPtr responder
, UInt32 key
) レスポンダとソフトキーメニューを関連付けします。
|
SFCError |
Bind(
SFYResponderSmpConstRef responder
, UInt32 key
) レスポンダとソフトキーメニューを関連付けします。
|
Bool |
ContainsColorKey(
UInt32 key
)
指定された色キーがこのソフトキーコントロールに登録されているかどうか判定します。
|
Bool |
ContainsImageKey(
UInt32 key
)
指定された画像キーがこのソフトキーコントロールに登録されているかどうか判定します。
|
Bool |
ContainsMenuKey(
UInt32 key
)
指定されたメニューキーがこのソフトキーコントロールに登録されているかどうか判定します。
|
Bool |
ContainsResponder(
SFYResponderPtr responder
)
指定されたレスポンダがこのソフトキーコントロールにバインドされているかどうか判定します。
|
Bool |
ContainsTextKey(
UInt32 key
)
指定されたテキストキーがこのソフトキーコントロールに登録されているかどうか判定します。
|
SFCError |
CreateMenu(
UInt32 key
) ソフトキーメニューを作成します。
|
Void |
DestroyMenu(
UInt32 key
) ソフトキーメニューを破棄します。
|
UInt32 |
GetActiveMenuKey( Void ) アクティブメニューのメニューキーを取得します。
|
SInt16 |
GetArrowBaseLength( Void )
拡張スタイルのソフトキーメニューに表示される矢印の底辺の長さを取得します。[単位:ピクセル]
|
SInt16 |
GetArrowHeight( Void )
拡張スタイルのソフトキーメニューに表示される矢印ラベルの高さを取得します。[単位:ピクセル]
|
SFXRGBColorConstRef |
GetBackColor(
UInt32 key
)
指定された色キーに設定されたラベルの背景色を取得します。
|
SInt16 |
GetBaseSpace( Void ) ソフトキーコントロールの境界線とラベル間のスペース値を取得します。[単位:ピクセル]
|
UInt32 |
GetColorKey(
UInt32 menuKey
, SoftkeyEnum index
)
指定されたソフトキーメニューのラベルに設定された色キーを取得します。
|
SFXRGBColorConstRef |
GetDefaultBackColor( Void ) ラベルのデフォルト背景色を取得します。
|
SFXRGBColorConstRef |
GetDefaultForeColor( Void ) ラベルのデフォルト前景色を取得します。
|
SFXRGBColorConstRef |
GetDefaultFrameColor( Void ) ラベルのデフォルトフレーム色を取得します。
|
Bool |
GetEnable(
UInt32 menuKey
, SoftkeyEnum index
)
指定されたメニューキーとラベル番号に対応するラベルの有効状態を取得します。
|
AEEFont |
GetFont( Void )
ラベルのテキストを描画するフォントを取得します。
|
SFXRGBColorConstRef |
GetForeColor(
UInt32 key
)
指定された色キーに設定されたラベルの前景色を取得します。
|
SFXRGBColorConstRef |
GetFrameColor(
UInt32 key
)
指定された色キーに設定されたラベルのフレーム色を取得します。
|
SFBImageSmpConstRef |
GetImage(
UInt32 key
) 指定された画像キーに対応するラベルの画像を取得します。
|
UInt32 |
GetImageKey(
UInt32 menuKey
, SoftkeyEnum index
)
指定されたソフトキーメニューのラベルに設定された画像キーを取得します。
|
SFXRectangleConstRef |
GetLabelRectangle(
SoftkeyEnumEnum index
) 指定されたラベルの矩形領域を取得します。
|
UInt32 |
GetMenuKey(
SFYResponderPtr responder
) 指定されたレスポンダに関連付けされているメニューキーを取得します。
|
StyleEnum |
GetStyle( Void ) メニューのスタイルを取得します。
|
SFXWideStringConstRef |
GetText(
UInt32 key
) 指定されたテキストキーに対応するラベルのテキストを取得します。
|
UInt32 |
GetTextKey(
UInt32 menuKey
, SoftkeyEnum index
)
指定されたソフトキーメニューのラベルに設定されたテキストキーを取得します。
|
static SFZSoftKeyControlSmp |
NewInstance(
SFCErrorPtr exception = null
) 新しいインスタンスを作成します。
|
SFCError |
RegisterBackColor(
UInt32 key
, SFXRGBColorConstRef param
)
ラベルまたは矢印(三角形)の背景色を登録します。
|
SFCError |
RegisterForeColor(
UInt32 key
, SFXRGBColorConstRef param
)
ラベルまたは矢印(三角形)の前景色を登録します。
|
SFCError |
RegisterFrameColor(
UInt32 key
, SFXRGBColorConstRef param
)
ラベルのフレーム色を登録します。
|
SFCError |
RegisterImage(
UInt32 key
, SFXPathConstRef path
)
ラベルの画像を登録します。
|
SFCError |
RegisterImage(
UInt32 key
, SFXPathConstRef path
, UInt16 id
)
ラベルの画像を登録します。
|
SFCError |
RegisterImage(
UInt32 key
, SFBImageSmpConstRef param
)
ラベルの画像を登録します。
|
SFCError |
RegisterImageRange(
UInt32 originKey
, SFXPathConstRef path
, UInt16 start
, UInt16 end
)
ラベルの画像をまとめて登録します。
|
SFCError |
RegisterText(
UInt32 key
, SFXPathConstRef path
, UInt16 id
)
ラベルのテキストを登録します。
|
SFCError |
RegisterText(
UInt32 key
, SFXWideStringConstRef param
)
ラベルのテキストを登録します。
|
SFCError |
RegisterTextRange(
UInt32 originKey
, SFXPathConstRef path
, UInt16 start
, UInt16 end
)
ラベルのテキストをまとめて登録します。
|
Void |
SetArrowBaseLength(
SInt16 param
)
拡張スタイルのソフトキーメニューに表示される矢印の底辺の長さを設定します。[単位:ピクセル]
|
Void |
SetArrowHeight(
SInt16 param
)
拡張スタイルのソフトキーメニューに表示される矢印ラベルの高さを設定します。[単位:ピクセル]
|
Void |
SetBaseSpace(
SInt16 param
) ソフトキーコントロールの境界線とラベル間のスペース値を設定します。[単位:ピクセル]
|
SFCError |
SetColorKey(
UInt32 menuKey
, SoftkeyEnum index
, UInt32 colorKey
)
指定されたソフトキーメニューのラベルに色キーを設定します。
|
SFCError |
SetColorKey(
UInt32 menuKey
, UInt32ConstPtr keys
, UInt32 num
)
指定されたソフトキーメニューのラベルに色キーを設定します。
|
Void |
SetDefaultBackColor(
SFXRGBColorConstRef param
) ラベルのデフォルト背景色を設定します。
|
Void |
SetDefaultForeColor(
SFXRGBColorConstRef param
) ラベルのデフォルト前景色を設定します。
|
Void |
SetDefaultFrameColor(
SFXRGBColorConstRef param
) ラベルのデフォルトフレーム色を設定します。
|
SFCError |
SetEnable(
UInt32 menuKey
, SoftkeyEnum index
, Bool enable
)
指定されたメニューキーとラベル番号に対応するラベルの有効状態を設定します。
|
SFCError |
SetEnable(
UInt32 menuKey
, BoolConstPtr enables
, UInt32 num
)
指定されたメニューキーとラベル番号に対応するラベルの有効状態を設定します。
|
Void |
SetFont(
AEEFont param
)
ラベルのテキストを描画するフォントを設定します。
|
SFCError |
SetImageKey(
UInt32 menuKey
, SoftkeyEnum index
, UInt32 imageKey
)
指定されたソフトキーメニューのラベルに画像キーを設定します。
|
SFCError |
SetImageKey(
UInt32 menuKey
, UInt32ConstPtr keys
, UInt32 num
)
指定されたソフトキーメニューのラベルに画像キーを設定します。
|
Void |
SetStyle(
StyleEnum param
) ソフトキーコントロールのスタイルを設定します。
|
SFCError |
SetTextKey(
UInt32 menuKey
, SoftkeyEnum index
, UInt32 textKey
)
指定されたソフトキーメニューのラベルにテキストキーを設定します。
|
SFCError |
SetTextKey(
UInt32 menuKey
, UInt32ConstPtr keys
, UInt32 num
)
指定されたソフトキーメニューのラベルにテキストキーを設定します。
|
Void |
UnBind(
SFYResponderPtr responder
) 指定されたレスポンダとの関連付けを解消します。
|
Void |
UnBind(
SFYResponderSmpConstRef responder
) 指定されたレスポンダとの関連付けを解消します。
|
Void |
UnregisterColor(
UInt32 key
) 指定された色キーへの 3 色(フレーム色、前景色、背景色)の登録を解除します。
|
Void |
UnregisterImage(
UInt32 key
) 指定された画像キーへの画像の登録を解除します。
|
Void |
UnregisterText(
UInt32 key
) 指定されたテキストキーへのテキストの登録を解除します。
|
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 から継承)
最前面に位置するこのレスポンダの子レスポンダを取得します。
|
SInt32 |
GetCurrentValue( Void )
(SFYControl から継承)
コントロールの現在値を取得します。
|
SFYDistributerPtr |
GetDistributer( Void )
(SFYResponder から継承)
このレスポンダに設定されている配信エンジンを取得します。
|
SFYResponderSmp |
GetFrame( Void )
(SFYResponder から継承)
このレスポンダに装着されたフレームを取得します。
|
SFXRectangle |
GetGlobalBound( Void )
(SFYResponder から継承)
このレスポンダのグローバル領域を取得します。
|
UInt32 |
GetID( Void )
(SFYResponder から継承)
このレスポンダの ID を取得します。
|
SFXRectangle |
GetLocalBound( Void )
(SFYResponder から継承)
このレスポンダのローカル領域を取得します。
|
SInt32 |
GetMaximumValue( Void )
(SFYControl から継承)
コントロールの最大値を取得します。
|
SInt32 |
GetMinimumValue( Void )
(SFYControl から継承)
コントロールの最小値を取得します。
|
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 |
SetCurrentValue(
SInt32 param
)
(SFYControl から継承)
コントロールの現在値を設定します。
|
Void |
SetDistributer(
SFYDistributerPtr param
)
(SFYResponder から継承)
指定された配信エンジンをこのレスポンダに設定します。
|
SFCError |
SetFrame(
SFYResponderSmpConstRef param
)
(SFYResponder から継承)
このレスポンダにフレームを装着します。
|
Void |
SetID(
UInt32 param
)
(SFYResponder から継承)
指定された ID をこのレスポンダに設定します。
|
Void |
SetMaximumValue(
SInt32 param
)
(SFYControl から継承)
コントロールの最大値を設定します。
|
Void |
SetMinimumValue(
SInt32 param
)
(SFYControl から継承)
コントロールの最小値を設定します。
|
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 |
DrawImage(
SFXGraphicsPtr graphics
, SFXRectangleConstRef rectangle
, SFBImageSmpConstRef image
) ラベルの画像を描画します。
|
SFXRectangle |
DrawRectangularFrame(
SFXGraphicsPtr graphics
, SFXRectangleConstRef rectangle
, SFXRGBColorConstRef back
, SFXRGBColorConstRef frame
) ラベルの矩形状フレームを描画します。
|
SFXRGBColorConstRef |
GetCacheBackColor(
SoftkeyEnum index
) アクティブラベルの背景色を取得します。
|
SFXRGBColorConstRef |
GetCacheForeColor(
SoftkeyEnum index
) 指定されたラベル番号のアクティブラベルの前景色を取得します。
|
SFXRGBColorConstRef |
GetCacheFrameColor(
SoftkeyEnum index
) 指定されたラベル番号のアクティブラベルのフレーム色を取得します。
|
SFBImageSmpConstRef |
GetCacheImage(
SoftkeyEnum index
) 指定されたラベル番号のアクティブラベルの画像を取得します。
|
Bool |
GetCacheLabelEnable(
SoftkeyEnum index
) 指定されたラベル番号のアクティブラベルの有効状態を取得します。
|
Bool |
GetCachePress(
SoftkeyEnum index
) 指定されたラベル番号のアクティブラベルの押下状態をキャッシュから取得します。
|
SFXWideStringConstRef |
GetCacheText(
SoftkeyEnum index
) 指定されたラベル番号のアクティブラベルのテキストをキャッシュから取得します。
|
Void |
HandleBoundOptimize(
SFXRectanglePtr rectangle
) (SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE) イベントを受信したときに呼び出される関数です(最適な領域のサイズと始点を計算します)。
|
Void |
HandleBoundReal( Void )
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL) イベントを受信したときに呼び出される関数です
(実領域が変化したときの処理を行います)。
|
Void |
HandleBoundRequest(
SFXRectanglePtr rectangle
) (SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST) イベントを受信したときに呼び出される関数です。[最適な領域のサイズと始点を計算します]
|
Void |
HandleBoundVirtual( Void )
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL) イベントを受信したときに呼び出される関数です
(仮想領域が変化したときの処理を行います)。
|
Void |
HandleRenderRequest(
SFXGraphicsPtr graphics
) 描画イベントを受信したときに呼び出される関数です(レスポンダを描画します)。
|
SFCError |
HandleSoftMenuCreate(
UInt32 key
) ソフトキーメニューが作成された直後に呼び出される関数です。
|
Void |
HandleSoftMenuDestroy(
UInt32 key
) ソフトキーメニューが破棄される直前に呼び出される関数です。
|
Void |
HandleStyle(
UInt16 style
)
スタイルイベントを受信したときに呼び出される関数です。
|
Void |
InvalidateCache( Void ) キャッシュを一時的に無効にします。
|
Bool |
IsCacheValid( Void ) キャッシュが有効かどうかを判定します。
|
SFCError |
RebuildCache( Void )
キャッシュを再構築します。
|
Void |
SetLabelRectangle(
SoftkeyEnum index
, SFXRectangleConstRef rectangle
) 指定されたラベルの矩形領域を設定します。
|
static SFYResponderSmp |
Factory(
SFYResponderPtr responder
, SFCErrorPtr exception = null
)
(SFYResponder から継承)
NewInstance 関数の実装を補助します。
|
SFYResponderSmp |
GetThis( Void )
(SFYResponder から継承)
このレスポンダのスマートポインタを取得します。
|
Void |
HandleBoundGlobal(
SFXRectangleConstRef rectangle
)
(SFYWidget から継承)
[非推奨(廃止予定 API)] グローバル領域が変化したときに呼び出される関数です。
|
Void |
SetType(
SFCType param
)
(SFYResponder から継承)
指定された値をこのレスポンダのタイプに設定します。
|
型 |
---|
CodeEnum SFZSoftKeyControl クラスを表す定数です。
|
KeyEnum 特別なキー値を表す定数です。
|
SoftkeyEnum ソフトキーを表す定数です。
|
StyleEnum SFZSoftKeyControl のスタイルを表す定数です。
|
HorizontalEnum
(SFYResponder から継承)
水平方向のアライメントを表す定数です。
|
VerticalEnum
(SFYResponder から継承)
垂直方向のアライメントを表す定数です。
|
[ protected, explicit ] SFZSoftKeyControl(Void);
このコンストラクタは、以下の初期化処理を行います。
注意 | |
---|---|
メニューキー "0" のデフォルトメニューの詳細は、SFZSoftKeyControl の解説を参照してください。 |
表 272. イベントハンドラ
イベント | ハンドラの内容 |
---|---|
AVK_SOFT1 から AVK_SOFT4 までの SFEVT_KEY イベント | 『アクティブレスポンダ』(※下記参照)にソフトキーイベント[SFEVT_RESPONDER_SOFTKEY]を送信します。 |
親レスポンダが設定された時に発生する親子イベント[SFEVT_RESPONDER_OWNER] | AVK_SOFT1 から AVK_SOFT4 までの SFEVT_KEY イベントを状態に関係なく前面の子レスポンダから順に配信するように親レスポンダのトレーサに配信ルールを登録します。 |
親レスポンダが解除された時に発生する親子イベント[SFEVT_RESPONDER_OWNER] | AVK_SOFT1 から AVK_SOFT4 までの SFEVT_KEY イベントに関する親レスポンダのトレーサの配信ルールの登録を解除します。 |
姉妹レスポンダが設定された時に発生する親子イベント[SFEVT_RESPONDER_OWNER] | ソフトキーコントロールを姉妹レスポンダの中で最前面に移動します。 |
ソフトキーコントロールのデザインが変更された時に発生するスタイルイベント[SFEVT_RESPONDER_STYLE] | SFZSoftKeyControl::HandleStyle 関数を呼び出します。 |
注意 | |
---|---|
SFZSoftKeyControl クラスを継承するレスポンダでは、 上記イベントが発生すると、それに対応するハンドラが呼び出されます。 |
このコンストラクタの内部実装は以下の通りです。
/*protected */SFZSoftKeyControl::SFZSoftKeyControl(Void) static_throws { static SFXRGBColor::AtomRecConst back = { {{0x00, 0xCC, 0xCC, 0xCC}} }; static SFXEventRange::AtomRecConst range[] = { { SFEVT_RESPONDER_OWNER, SFEVT_RESPONDER_OWNER, SFP16_OWNER_PARENT, SFP16_OWNER_PARENT }, { SFEVT_RESPONDER_STYLE, SFEVT_RESPONDER_STYLE, SFP16_BEGIN, SFP16_END }, { SFEVT_KEY, SFEVT_KEY, AVK_SOFT1, AVK_SOFT4 } }; static SFXRGBColor::AtomRecConst theme[] = { {{{0x00, 0xDD, 0xDD, 0xDD}}}, {{{0x00, 0xFF, 0xFF, 0xFF}}}, {{{0x00, 0x77, 0x77, 0x77}}} }; SFYHandler::RuleRec rule[lengthof(range)]; if (static_try()) { SetType(CODE_TYPE); rule[0].spp = XANDLER_FUNCTION(OnSetParent); rule[0].reference = this; rule[1].spp = XANDLER_FUNCTION(OnStyle); rule[1].reference = this; rule[2].spp = XANDLER_FUNCTION(OnKey); rule[2].reference = this; static_throw(RegisterHandler(atomic_cast(range), rule, lengthof(range))); if (static_try()) { _font = AEE_FONT_NORMAL; _style = STANDARD; _size.baseSpace = BASE_SPACE; _size.arrowBaseLength = ARROW_BASE_LENGTH; _size.arrowHeight = ARROW_HEIGHT; _saveParent = null; _focus = null; MEMSET(static_cast<VoidPtr>(_cache.text), 0, SOFTKEY_LIMIT * sizeof(_cache.text[0])); MEMSET(static_cast<VoidPtr>(_cache.image), 0, SOFTKEY_LIMIT * sizeof(_cache.image[0])); _cache.enable = 0; _cache.press = 0; _cache.valid = false; SetBackgroundColor(back); _defaultColor.frame = theme[0]; _defaultColor.fore = theme[1]; _defaultColor.back = theme[2]; static_throw(RegisterText(0, SFXWideString::EmptyInstance())); if (static_try()) { static_throw(RegisterColorImpl(0, _defaultColor)); if (static_try()) { static_throw(RegisterImage(0, SFBImageSmp::EmptyInstance())); if (static_try()) { static_throw(CreateMenu(0)); } } } } } }// SFZSoftKeyControl::SFZSoftKeyControl // /*private */XANDLER_IMPLEMENT_VOIDOWNER(SFZSoftKeyControl, OnSetParent, invoker, reason, responder) { static SFXEventRange::AtomRecConst range[] = { { SFEVT_RESPONDER_OWNER, SFEVT_RESPONDER_OWNER, SFP16_OWNER_ARRANGE, SFP16_OWNER_ARRANGE}, }; SFYHandler::RuleRec rule[lengthof(range)]; SFCError error(SFERR_NO_ERROR); unused(invoker); unused(reason); rule[0].spp = XANDLER_FUNCTION(OnArrange); rule[0].reference = this; if (_saveParent != null) { _saveParent->UnregisterHandler(atomic_cast(range), rule, lengthof(range)); _saveParent->UnregisterTracer( SFXEventRange(SFEVT_KEY, SFEVT_KEY, AVK_SOFT1, AVK_SOFT4) ); } if ((_saveParent = responder) != null) { error = _saveParent->RegisterTracer( SFXEventRange(SFEVT_KEY, SFEVT_KEY, AVK_SOFT1, AVK_SOFT4), SFYTracer::ORDER_FORWARD, SFYTracer::STATE_ALL, false ); if (error == SFERR_NO_ERROR) { error = _saveParent->RegisterHandler(atomic_cast(range), rule, lengthof(range)); } } return; }// XANDLER_IMPLEMENT_VOIDOWNER(SFZSoftKeyControl, OnSetParent) // /*private */XANDLER_IMPLEMENT_VOIDOWNER(SFZSoftKeyControl, OnArrange, invoker, reason, responder) { unused(invoker); unused(reason); unused(responder); if (!IsFront()) { ToFront(); } return; }// XANDLER_IMPLEMENT_VOIDOWNER(SFZSoftKeyControl, OnArrange) // /*private */XANDLER_IMPLEMENT_VOIDSTYLE(SFZSoftKeyControl, OnStyle, invoker, reason) { unused(invoker); HandleStyle(reason); return; }// XANDLER_IMPLEMENT_VOIDSTYLE(SFZSoftKeyControl, OnStyle) // /*private */XANDLER_IMPLEMENT_BOOLEVENT(SFZSoftKeyControl, OnKey, invoker, event) { unused(invoker); if (SFYApplication::GetInstance()->IsRenderable()) { if (_focus != null && _menuMap[_respMap[_focus]] != null) { _focus->InvokeForward(SFXEvent(SFEVT_RESPONDER_SOFTKEY, event.GetP16(), event.GetP32()), false); } } return true; }// XANDLER_IMPLEMENT_BOOLEVENT(SFZSoftKeyControl, OnKey) // XANDLER_IMPLEMENT_VOIDSTATE(SFZSoftKeyControl, OnResponderValid, invoker, reason, state) { unused(reason); if (!state) { UnBind(invoker); } return; }// XANDLER_IMPLEMENT_VOIDSTATE(SFZSoftKeyControl, OnResponderValid) // XANDLER_IMPLEMENT_VOIDSTATE(SFZSoftKeyControl, OnResponderFocus, invoker, reason, state) { unused(reason); if (static_cast<SFZSoftKeyControlPtr>(invoker)->GetRoot() == GetRoot()) { if (state) { _focus = invoker; } else { SFYResponderSmp parent; parent = invoker->GetParent(); while (parent != null) { if (_respMap.ContainsKey(parent.Get())) { break; } parent = parent->GetParent(); } _focus = parent.Get(); } InvalidateCache(); Invalidate(); } return; }// XANDLER_IMPLEMENT_VOIDSTATE(SFZSoftKeyControl, OnResponderFocus) // XANDLER_IMPLEMENT_BOOLEVENT(SFZSoftKeyControl, OnResponderKey, invoker, event) { Bool result(false); unused(invoker); if (_style == EXTENSION) { SoftkeyEnum index = static_cast<SoftkeyEnum>(event.GetP16() - AVK_UP + UP); switch (index) { case UP: case DOWN: case LEFT: case RIGHT: if (GetCacheLabelEnable(index)) { if (event.GetType() == SFEVT_KEY_PRESS) { _cache.press |= (1 << index); } else { _cache.press &= ~(1 << index); } Invalidate(); result = true; } break; default: break; } } return result; }// XANDLER_IMPLEMENT_BOOLEVENT(SFZSoftKeyControl, OnResponderKey) //
SFYResponder::SetType | SFZSoftKeyControl::CodeEnum | SFZSoftKeyControl::SetFont | SFZSoftKeyControl::SetStyle | SFZSoftKeyControl::StyleEnum | SFZSoftKeyControl::SetBaseSpace | SFZSoftKeyControl::SetArrowBaseLength | SFZSoftKeyControl::SetArrowHeight | SFYWidget::SetBackgroundColor | SFZSoftKeyControl::SetDefaultFrameColor | SFZSoftKeyControl::SetDefaultForeColor | SFZSoftKeyControl::SetDefaultBackColor | SFZSoftKeyControl::HandleStyle | SFZSoftKeyControl::RegisterFrameColor | SFZSoftKeyControl::RegisterForeColor | SFZSoftKeyControl::RegisterBackColor | SFZSoftKeyControl::RegisterImage | SFZSoftKeyControl::RegisterText | SFZSoftKeyControl::SetColorKey | SFZSoftKeyControl::SetImageKey | SFZSoftKeyControl::SetTextKey | SFZSoftKeyControl::SetEnable | SFZSoftKeyControl::CreateMenu | SFXEvent | SFXRGBColor | タイプ | トレーサ | イベント | キーイベント[SFEVT_KEY] | ソフトキーイベント[SFEVT_RESPONDER_SOFTKEY] | 親子イベント[SFEVT_RESPONDER_OWNER] | スタイルイベント[SFEVT_RESPONDER_STYLE]
[ protected, virtual ] virtual ~SFZSoftKeyControl(Void);
ソフトキーコントロールに関して下記の終了処理を行います。
このデストラクタの内部実装は以下の通りです。
/*protected virtual */SFZSoftKeyControl::~SFZSoftKeyControl(Void) { ResponderMap::KeyIterator resp(_respMap.GetKeyIterator()); MenuMap::ValueIterator menu(_menuMap.GetValueIterator()); ImageMap::ValueIterator image(_imageMap.GetValueIterator()); ColorMap::ValueIterator color(_colorMap.GetValueIterator()); TextMap::ValueIterator text(_textMap.GetValueIterator()); while (resp.HasNext()) { UnBind(resp.GetNext()); } while (menu.HasNext()) { ::delete menu.GetNext(); } while (image.HasNext()) { ::delete image.GetNext(); } while (color.HasNext()) { ::delete color.GetNext(); } while (text.HasNext()) { ::delete text.GetNext(); } }// SFZSoftKeyControl::~SFZSoftKeyControl //
SFZSoftKeyControl::UnBind | SFZSoftKeyControl::CreateMenu | SFZSoftKeyControl::DestroyMenu | SFZSoftKeyControl::RegisterImage | SFZSoftKeyControl::RegisterImageRange | SFZSoftKeyControl::UnregisterImage | SFZSoftKeyControl::RegisterBackColor | SFZSoftKeyControl::RegisterBackColor | SFZSoftKeyControl::RegisterFrameColor | SFZSoftKeyControl::UnregisterColor | SFZSoftKeyControl::RegisterText | SFZSoftKeyControl::RegisterTextRange | SFZSoftKeyControl::UnregisterText
[ public ] SFCError Bind( SFYResponderPtr responder // レスポンダ UInt32 key // メニューキー );
[ public ] SFCError Bind( SFYResponderSmpConstRef responder // レスポンダ UInt32 key // メニューキー );
この関数は、指定されたレスポンダとこのソフトキーコントロールの指定されたソフトキーメニューを関連付けます。
ソフトキーコントロールは、 responder 引数に指定されたレスポンダが『アクティブレスポンダ(※)』であるときに限り、 key 引数に指定されたソフトキーメニューを表示します。
この関数によるレスポンダとソフトキーメニューの関連付けは、 SFZSoftKeyControl::UnBind 関数が呼び出されるまで有効です。 SFZSoftKeyControl::UnBind 関数は、ソフトキーメニューに関連付けられたレスポンダが無効状態になったときや、 SFZSoftKeyControl::~SFZSoftKeyControl デストラクタ内から内部的に呼び出されます。
アクティブレスポンダ | |
---|---|
『アクティブレスポンダ』とは、 ソフトキーメニューにバインドされた、 フォーカス状態にあるレスポンダの中で、 最前面に配置されているレスポンダのことです。 |
ソフトキーコントロールの仕組み | |
---|---|
ソフトキーコントロールでは、 1 つのソフトキーメニューを複数のレスポンダに関連付けることが可能です。 バインドされている何れかのレスポンダがフォーカス状態にあるとき、 ソフトキーコントロールは『アクティブ』であると呼びます。 そして、その中で最前面にあるレスポンダを『アクティブレスポンダ』と呼びます。 画面には、『アクティブレスポンダ』に関連付けられているソフトキーメニュー (『アクティブメニュー』と呼ぶ)が表示されます。 ソフトキーコントロールは、 ソフトキー 1 〜 4 のキーイベント[SFEVT_KEY]を受信し、 それをソフトキーイベント[SFEVT_RESPONDER_SOFTKEY]として 『アクティブレスポンダ』に送信します。 ソフトキーコントロールが『アクティブ』でない場合、 ソフトキーイベント[SFEVT_RESPONDER_SOFTKEY] はいずれのレスポンダにも送信されません。 このとき、画面にはメニューキー "0" で登録されている『デフォルトメニュー』が表示されます。 ※ソフトキーコントロールは、セレクトキーや上下左右キーのキーイベントを処理しません。 |
この関数は、指定された色キーがこのソフトキーコントロールに登録されているかどうか判定します。
この関数は、指定された画像キーがこのソフトキーコントロールに登録されているかどうか判定します。
この関数は、指定されたメニューキーがこのソフトキーコントロールに登録されているかどうか判定します。
[ public, const ] Bool ContainsResponder( SFYResponderPtr responder // レスポンダ );
この関数は、指定されたレスポンダがこのソフトキーコントロールにバインドされているかどうか判定します。
この関数は、指定されたテキストキーがこのソフトキーコントロールに登録されているかどうか判定します。
この関数は、メニューキーに対応するソフトキーメニューを作成します。
key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定すると、 SFERR_INVALID_PARAM が返ります。
ソフトキーメニューを作成した直後は、すべてのラベルは有効状態に初期設定されます[有効フラグがセットされるため、ラベルは表示されます]。 また、テキスト、画像、3 色の要素キーはすべて "0" に初期設定されます。
注意 | |
---|---|
SFZSoftKeyControl::~SFZSoftKeyControl デストラクタが呼び出されるまでソフトキーメニューはヒープ上に残ります。 指定されたメニューキーに対応するソフトキーメニューが存在していた場合は、既存のソフトキーメニューは破棄され、 新しく作成されたソフトキーメニューがそれに置き換わります。 この場合、 既存ソフトキーメニューの破棄直前、内部で key 引数の値を指定して SFZSoftKeyControl::HandleSoftMenuDestroy 関数を呼び出します。 |
注意 | |
---|---|
この関数は、ソフトキーメニュー作成直後、内部で key 引数の値を指定して SFZSoftKeyControl::HandleSoftMenuCreate 関数を呼び出します。 |
メニューキー "0" | |
---|---|
メニューキー "0" のソフトキーメニューは、 ソフトキーコントロールのインスタンス生成時に自動的に作成されます。 メニューキー "0" のソフトキーメニューは、 デフォルトメニューとして使用されます。 |
デフォルトメニュー | |
---|---|
デフォルトメニューとは、 ソフトキーコントロールが『アクティブ』でない、 つまり、『アクティブレスポンダ』が存在しない場合に表示されるデフォルトのソフトキーメニューのことです。 デフォルトメニューは、 ソフトキーコントロールのインスタンス生成時に自動的に作成され、メニューキー "0" で登録されています。 デフォルトメニューの初期値は、以下の通りです。
※1. 上記の初期値は、 SFZSoftKeyControl::SetTextKey / SFZSoftKeyControl::SetImageKey / SFZSoftKeyControl::SetColorKey 関数を使用して、 メニューキー "0" の各ラベルに関する『テキスト、画像、3 色』の要素のキーを設定することにより変更できます。 ※2. ラベルの有効状態は、デフォルト設定では有効("true")であるため、そのままではラベル領域は表示されます。 ラベル領域を非表示にするには、 SFZSoftKeyControl::SetEnable 関数を使用して有効状態を無効("false")に設定する必要があります。 |
アクティブレスポンダ | |
---|---|
『アクティブレスポンダ』とは、 ソフトキーメニューにバインドされた、 フォーカス状態にあるレスポンダの中で、 最前面に配置されているレスポンダのことです。 ソフトキーメニューにバインドされたフォーカス状態にあるレスポンダが 1 つ以上存在する場合、 つまり、『アクティブレスポンダ』が存在する場合、ソフトキーコントロールは『アクティブ』であると呼びます。 |
アクティブメニュー | |
---|---|
『アクティブメニュー』とは、 『アクティブレスポンダ』にバインドされたソフトキーメニューのことです。 |
SFZSoftKeyControl::HandleSoftMenuCreate | SFZSoftKeyControl::HandleSoftMenuDestroy | SFZSoftKeyControl::DestroyMenu | SFXWideString::EmptyInstance | SFXBrewPointer::EmptyInstance | SFZSoftKeyControl::SetColorKey | SFZSoftKeyControl::SetTextKey | SFZSoftKeyControl::SetImageKey | SFZSoftKeyControl::KeyEnum | SFZSoftKeyControl::~SFZSoftKeyControl | SFXWideString | SFBImage
この関数は、メニューキーに対応するソフトキーメニューを破棄します。
注意 | |
---|---|
破棄される直前、ハンドラ(SFZSoftKeyControl::HandleSoftMenuDestroy)が呼び出されます。 ソフトキーメニューが存在しなかった場合は何もしません。 |
[ protected, const ] Void DrawImage( SFXGraphicsPtr graphics // グラフィックスオブジェクト SFXRectangleConstRef rectangle // 描画する領域 SFBImageSmpConstRef image // 描画する画像 );
この関数は、指定されたラベル画像を指定された矩形領域に描画します。
このとき、領域の中心は画像の中心と一致します。
独自の描画処理を行うには、この関数をオーバーライドします。
Tip | |
---|---|
この関数は SFZSoftKeyControl::HandleBoundRequest 関数の中から呼び出されます。 |
この関数の内部実装は以下の通りです。
/*protected */Void SFZSoftKeyControl::DrawImage(SFXGraphicsPtr graphics, SFXRectangleConstRef rectangle, SFBImageSmpConstRef image) const { SFXRectangle rcImage(rectangle); AEEImageInfo info; SInt16 dx; SInt16 dy; if (image != null) { image->GetInfo(&info); if (info.cx > 0 && info.cy > 0) { dx = (rcImage.GetWidth() - info.cx) / 2; dy = (rcImage.GetHeight() - info.cy) / 2; rcImage.SetSize(info.cx, info.cy); graphics->DrawImage(image, rcImage.GetOrigin() + SFXGrid(dx, dy)); } } return; }// SFZSoftKeyControl::DrawImage //
[ protected, const ] SFXRectangle DrawRectangularFrame( SFXGraphicsPtr graphics // グラフィックスオブジェクト SFXRectangleConstRef rectangle // 描画する領域 SFXRGBColorConstRef back // 描画する背景色 SFXRGBColorConstRef frame // 描画するフレーム色 );
フレーム内部のコンテンツ領域。
この関数は、指定されたラベルの矩形領域に関して、 フレームとフレームが囲むコンテンツ領域をそれぞれ指定された色で塗り潰します。 また、フレームが囲むコンテンツ領域を返します。
戻り値のコンテンツ領域には、テキストや画像を描画します。
独自の描画処理を行うには、この関数をオーバーライドします。
Tip | |
---|---|
この関数は SFZSoftKeyControl::HandleRenderRequest 関数の中から呼び出されます。 |
この関数の内部実装は以下の通りです。
enum { ARROW_BASE_LENGTH = 6, ARROW_HEIGHT = 3, BASE_SPACE = 2, RING_MARGIN = 3, RING_SIZE = 1 }; /*protected */SFXRectangle SFZSoftKeyControl::DrawRectangularFrame(SFXGraphicsPtr graphics, SFXRectangleConstRef rectangle, SFXRGBColorConstRef back, SFXRGBColorConstRef frame) const { SFXRectangle result(rectangle); graphics->DrawRoundRectangle(result, SFXSize(9, 9), back); result.Deflate(RING_SIZE, RING_SIZE); graphics->FillRoundRectangle(result, SFXSize(7, 7), back); graphics->DrawRoundRectangle(result, SFXSize(7, 7), frame); result.Deflate(RING_MARGIN - RING_SIZE, RING_MARGIN - RING_SIZE); return result; }// SFZSoftKeyControl::DrawRectangularFrAme //
[ public, const ] UInt32 GetActiveMenuKey(Void);
この関数は、アクティブメニューのメニューキーを取得します。
アクティブメニューとは | |
---|---|
現在画面最下部に表示されているソフトキーメニューをアクティブメニューと呼びます。 |
[ public, const ] SInt16 GetArrowBaseLength(Void);
矢印の底辺の長さ。[単位:ピクセル]
この関数は、拡張スタイルのソフトキーメニューに表示される矢印ラベルの底辺の長さを取得します。[単位:ピクセル]
[ public, const ] SInt16 GetArrowHeight(Void);
矢印の高さ。[単位:ピクセル]
この関数は、拡張スタイルのソフトキーメニューに表示される矢印ラベルの高さを取得します。[単位:ピクセル]
[ public, const ] SFXRGBColorConstRef GetBackColor( UInt32 key // 色キー(固有のキー) );
この関数は、指定された色キーに設定されたラベルの背景色(または矢印の色)を取得します。
色キーが登録されていない場合、 SFZSoftKeyControl::SetDefaultBackColor 関数で設定する、 ラベルのデフォルト背景色を返します。
SFZSoftKeyControl::RegisterBackColor | SFZSoftKeyControl::UnregisterColor | SFZSoftKeyControl::SetDefaultBackColor | SFZSoftKeyControl::GetFrameColor | SFZSoftKeyControl::GetForeColor | SFZSoftKeyControl::GetText | SFZSoftKeyControl::GetImage
[ public, const ] SInt16 GetBaseSpace(Void);
基準のスペース値。[単位:ピクセル]
この関数は、ソフトキーコントロールの境界線とラベル間のスペース値を取得します。[単位:ピクセル]
注意 | |
---|---|
ラベル同士の間隔もこの値になります。 |
[ protected, const ] SFXRGBColorConstRef GetCacheBackColor( SoftkeyEnum index // ラベル番号 );
SFZSoftKeyControl::SoftkeyEnum 定数を指定します。
ラベルの背景色。
この関数は、キャッシュからラベル番号を指定してアクティブラベルの背景色を取得します。
アクティブラベルとは | |
---|---|
アクティブメニューのラベルをアクティブラベルと呼びます。 |
アクティブメニューとは | |
---|---|
現在画面最下部に表示されているソフトキーメニューをアクティブメニューと呼びます。 |
ソフトキーコントロールのキャッシュ | |
---|---|
ソフトキーコントロールでは、 アクティブメニューの内容はキャッシュに保存されます。 |
SFZSoftKeyControl::SoftkeyEnum | SFZSoftKeyControl::GetCacheFrameColor | SFZSoftKeyControl::GetCacheForeColor
[ protected, const ] SFXRGBColorConstRef GetCacheForeColor( SoftkeyEnum index // ラベル番号 );
SFZSoftKeyControl::SoftkeyEnum 定数を指定します。
指定されたラベル番号のアクティブラベルの前景色。
この関数は、指定されたラベル番号のアクティブラベルの前景色をキャッシュから取得します。
アクティブラベルとは | |
---|---|
アクティブメニューのラベルをアクティブラベルと呼びます。 |
アクティブメニューとは | |
---|---|
現在画面最下部に表示されているソフトキーメニューをアクティブメニューと呼びます。 |
ソフトキーコントロールのキャッシュ | |
---|---|
ソフトキーコントロールでは、 アクティブメニューの内容はキャッシュに保存されます。 |
SFZSoftKeyControl::SoftkeyEnum | SFZSoftKeyControl::GetCacheFrameColor | SFZSoftKeyControl::GetCacheBackColor
[ protected, const ] SFXRGBColorConstRef GetCacheFrameColor( SoftkeyEnum index // ラベル番号 );
SFZSoftKeyControl::SoftkeyEnum 定数を指定します。
指定されたラベル番号のアクティブラベルのフレーム色。
この関数は、指定されたラベル番号のアクティブラベルのフレーム色をキャッシュから取得します。
アクティブラベルとは | |
---|---|
アクティブメニューのラベルをアクティブラベルと呼びます。 |
アクティブメニューとは | |
---|---|
現在画面最下部に表示されているソフトキーメニューをアクティブメニューと呼びます。 |
ソフトキーコントロールのキャッシュ | |
---|---|
ソフトキーコントロールでは、 アクティブメニューの内容はキャッシュに保存されます。 |
SFZSoftKeyControl::SoftkeyEnum | SFZSoftKeyControl::GetCacheForeColor | SFZSoftKeyControl::GetCacheBackColor
[ protected, const ] SFBImageSmpConstRef GetCacheImage( SoftkeyEnum index // ラベル番号(上下左右キーラベルを含まない) );
SFZSoftKeyControl::SoftkeyEnum 定数で定義される、 SELECT, SOFTKEY_1, SOFTKEY_2, SOFTKEY_3, SOFTKEY_4 の何れかの値を指定します。
指定されたラベル番号のアクティブラベルの画像。
この関数は、指定されたラベル番号のアクティブラベルの画像をキャッシュから取得します。
上下左右キーのラベル番号を指定された場合、null を返します。
アクティブラベルとは | |
---|---|
アクティブメニューのラベルをアクティブラベルと呼びます。 |
アクティブメニューとは | |
---|---|
現在画面最下部に表示されているソフトキーメニューをアクティブメニューと呼びます。 |
ソフトキーコントロールのキャッシュ | |
---|---|
ソフトキーコントロールでは、 アクティブメニューの内容はキャッシュに保存されます。 |
[ protected, const ] Bool GetCacheLabelEnable( SoftkeyEnum index // ラベル番号 );
SFZSoftKeyControl::SoftkeyEnum 定数を指定します。
ラベルの有効状態
この関数は、指定されたラベル番号のアクティブラベルの有効状態をキャッシュから取得します。
有効状態が false のラベルは描画の対象になりません。
アクティブラベルとは | |
---|---|
アクティブメニューのラベルをアクティブラベルと呼びます。 |
アクティブメニューとは | |
---|---|
現在画面最下部に表示されているソフトキーメニューをアクティブメニューと呼びます。 |
ソフトキーコントロールのキャッシュ | |
---|---|
ソフトキーコントロールでは、 アクティブメニューの内容はキャッシュに保存されます。 |
[ protected, const ] Bool GetCachePress( SoftkeyEnum index // ラベル番号 (上下左右キーラベルのみ) );
SFZSoftKeyControl::SoftkeyEnum 定数で定義される、 UP, DOWN, LEFT, RIGHT の何れかの値を指定します。
指定されたラベル番号のアクティブラベル(上下左右キーラベル)の押下状態。
この関数は、指定されたラベル番号のアクティブラベルの押下状態をキャッシュから取得します。
上下左右キーラベル以外のラベル番号を指定された場合、false を返します。
アクティブラベルとは | |
---|---|
アクティブメニューのラベルをアクティブラベルと呼びます。 |
アクティブメニューとは | |
---|---|
現在画面最下部に表示されているソフトキーメニューをアクティブメニューと呼びます。 |
ソフトキーコントロールのキャッシュ | |
---|---|
ソフトキーコントロールでは、 アクティブメニューの内容はキャッシュに保存されます。 |
[ protected, const ] SFXWideStringConstRef GetCacheText( SoftkeyEnum index // ラベル番号(上下左右キーラベルを含まない) );
SFZSoftKeyControl::SoftkeyEnum 定数で定義される、 SELECT, SOFTKEY_1, SOFTKEY_2, SOFTKEY_3, SOFTKEY_4 の何れかの値を指定します。
指定されたラベル番号のアクティブラベルのテキスト。
この関数は、指定されたラベル番号のアクティブラベルのテキストをキャッシュから取得します。
上下左右キーのラベル番号を指定された場合、null を返します。
アクティブラベルとは | |
---|---|
アクティブメニューのラベルをアクティブラベルと呼びます。 |
アクティブメニューとは | |
---|---|
現在画面最下部に表示されているソフトキーメニューをアクティブメニューと呼びます。 |
ソフトキーコントロールのキャッシュ | |
---|---|
ソフトキーコントロールでは、 アクティブメニューの内容はキャッシュに保存されます。 |
この関数は、指定されたソフトキーメニューのラベルに設定された色キーを取得します。
menuKey 引数に指定したメニューキーが登録されていない、または index 引数にしていしたラベル番号が正しくないときは、 INVALID_KEY(=UINT32_MAXIMUM)を返します。
[ public, const ] SFXRGBColorConstRef GetDefaultBackColor(Void);
この関数は、色キーが不正な場合に使用される、 ラベルのデフォルト背景色を取得します。
[ public, const ] SFXRGBColorConstRef GetDefaultForeColor(Void);
この関数は、色キーが不正な場合に使用される、 ラベルのデフォルト前景色を取得します。
[ public, const ] SFXRGBColorConstRef GetDefaultFrameColor(Void);
この関数は、色キーが不正な場合に使用されるラベルのデフォルトフレーム色を取得します。
この関数は、指定されたメニューキーとラベル番号に対応するラベルの有効状態を取得します。
不正なメニューキーやラベル番号を指定された場合は false を返します。
注意 | |
---|---|
有効状態が false であるラベルは描画されません。 |
[ public, const ] AEEFont GetFont(Void);
ラベルのテキストを描画するフォント。
この関数は、ラベルのテキストを描画するフォントを取得します。
[ public, const ] SFXRGBColorConstRef GetForeColor( UInt32 key // 色キー(固有のキー) );
この関数は、指定された色キーに設定されたラベルの前景色(テキストを描画する色)を取得します。
色キーが登録されていない場合は、 SFZSoftKeyControl::SetDefaultForeColor 関数を使用して設定する、 ラベルのデフォルト前景色を返します。
SFZSoftKeyControl::RegisterForeColor | SFZSoftKeyControl::UnregisterColor | SFZSoftKeyControl::SetDefaultForeColor | SFZSoftKeyControl::GetFrameColor | SFZSoftKeyControl::GetBackColor | SFZSoftKeyControl::GetText | SFZSoftKeyControl::GetImage
[ public, const ] SFXRGBColorConstRef GetFrameColor( UInt32 key // 色キー(固有のキー) );
この関数は、指定された色キーに設定されたラベルのフレーム色を取得します。
色キーが登録されていない場合は、 SFZSoftKeyControl::SetDefaultFrameColor 関数を使用して設定する、 ラベルのデフォルトフレーム色を返します。
SFZSoftKeyControl::RegisterFrameColor | SFZSoftKeyControl::UnregisterColor | SFZSoftKeyControl::SetDefaultFrameColor | SFZSoftKeyControl::GetForeColor | SFZSoftKeyControl::GetBackColor | SFZSoftKeyControl::GetText | SFZSoftKeyControl::GetImage
[ public, const ] SFBImageSmpConstRef GetImage( UInt32 key // 画像キー(固有のキー) );
指定された画像キーに対応するラベルの画像。
SFZSoftKeyControl::RegisterImage | SFZSoftKeyControl::UnregisterImage | SFZSoftKeyControl::GetText | SFZSoftKeyControl::GetBackColor | SFZSoftKeyControl::GetForeColor | SFZSoftKeyControl::GetFrameColor | SFXBrewPointer::EmptyInstance | SFBImage
この関数は、指定されたソフトキーメニューのラベルに設定された画像キーを取得します。
menuKey 引数に指定したメニューキーが登録されていない、または index 引数にしていしたラベル番号が正しくないときは、 INVALID_KEY(=UINT32_MAXIMUM)を返します。
[ public, const ] SFXRectangleConstRef GetLabelRectangle( SoftkeyEnumEnum index // ラベル番号 );
指定されたラベルの矩形領域。
この関数は、指定されたラベルの矩形領域を取得します。
注意 | |
---|---|
この関数は、 独自の描画処理を行う場合など、ラベルの領域を取得する必要があるときに使用します。 |
SFZSoftKeyControl::SoftkeyEnum | SFZSoftKeyControl::SetLabelRectangle | SFZSoftKeyControl::DrawRectangularFrame
[ public, const ] UInt32 GetMenuKey( SFYResponderPtr responder // レスポンダ );
指定されたレスポンダに関連付けされているメニューキー。
この関数は、指定されたレスポンダに関連付けされているメニューキーを取得します。
指定されたレスポンダにソフトキーメニューが関連付けられていない場合、 INVALID_KEY (= UINT32_MAXIMUM) を返します。
[ public, const ] StyleEnum GetStyle(Void);
メニューのスタイル。
この関数は、メニューのスタイルを取得します。
[ public, const ] SFXWideStringConstRef GetText( UInt32 key // テキストキー(固有のキー) );
指定されたテキストキーに対応するラベルのテキスト。
この関数は、指定されたテキストキーに対応するラベルのテキストを取得します。
指定されたテキストキーが登録されていない場合は、 SFXWideString::EmptyInstance() を返します。
SFZSoftKeyControl::RegisterText | SFZSoftKeyControl::UnregisterText | SFZSoftKeyControl::GetImage | SFZSoftKeyControl::GetBackColor | SFZSoftKeyControl::GetForeColor | SFZSoftKeyControl::GetFrameColor | SFXWideString::EmptyInstance | SFXWideString
指定されたソフトキーメニューのラベルに設定されたテキストキー。
この関数は、指定されたソフトキーメニューのラベルに設定されたテキストキーを取得します。
menuKey 引数に指定したメニューキーが登録されていない、または index 引数にしていしたラベル番号が正しくないときは、 INVALID_KEY(=UINT32_MAXIMUM)を返します。
[ protected, virtual, const ] Void HandleBoundOptimize( SFXRectanglePtr rectangle // 矩形 );
この関数は、 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE, rectangle)] を受信したときに呼び出されます。
このレスポンダに最適なサイズと始点を計算します。
デフォルトの実装は、携帯電話画面の中でスタイルに応じたソフトキーコントロールの最適な領域と始点を計算します。
注意事項 | |
---|---|
この関数の実装は、SFZSoftKeyControl::HandleBoundRequest 関数と同一です。 引数の rectangle に矩形領域が設定されても無視され、携帯電話の画面全体から最適な領域が計算されます。 通常の HandleBoundOptimize 関数では計算結果に最適なサイズだけが返りますが、 SFZSoftKeyControl::HandleBoundOptimize 関数では、 領域イベントの P32 パラメータとして渡された rectangle 引数の origin 要素(始点)に最適な位置も計算されて返ります。 そのため、SFZSoftKeyControl クラスでは SFYResponder::GetSuitableBound 関数を呼び出してから実領域の始点を設定する必要はありません。 なお、SFYResponder::GetSuitableBound 関数を呼び出すときに引数に矩形領域を指定しても無視されます。 |
領域イベント[(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE) イベント] | |
---|---|
SFYResponder::GetSuitableBound 関数は、 引数にヒント領域を指定された場合は 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE, rectangle)] をレスポンダに送信します。 SFYWidget クラスを継承するレスポンダが領域イベントを受信すると、 SFYWidget::SFYWidget コンストラクタで最初に登録した領域イベント専用ハンドラの処理により、 SFYWidget::HandleBoundOptimize 仮想関数が呼び出されます。 ※ 領域イベントの P32 パラメータ rectangle にはヒント領域が初期設定されています。 |
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE) イベント受信時の最適な領域計算 | |
---|---|
SFYWidget::HandleBoundOptimize 仮想関数をオーバーライドする以外に、 領域イベント専用ハンドラ[XANDLER_DECLARE_VOIDBOUND]を定義・実装し レスポンダに登録して行うことも可能です。 最適な領域の計算は、最初に SFYWidget::HandleBoundOptimize 仮想関数を実行し、 次に領域イベント専用ハンドラを登録した順に実行して行われます。 領域イベント専用ハンドラを宣言し登録する手間が省けるので、 通常は SFYWidget::HandleBoundOptimize 仮想関数をオーバーライドして処理を記述します。 |
この関数の内部実装は以下の通りです。
enum { ARROW_BASE_LENGTH = 6, ARROW_HEIGHT = 3, BASE_SPACE = 2, RING_MARGIN = 3, RING_SIZE = 1 }; enum StyleEnum { STANDARD = 0, EXTENSION, DEFAULT_STYLE = STANDARD }; /*protected virtual */Void SFZSoftKeyControl::HandleBoundOptimize(SFXRectanglePtr rectangle) const { BoundImpl(rectangle); return; }// SFZSoftKeyControl::HandleBoundOptimize // /*private */Void SFZSoftKeyControl::BoundImpl(SFXRectanglePtr rectangle) const { SFXDevice device; SInt16 h; SInt16 H; rectangle->Set(SFXGrid::ZeroInstance(), device.GetScreenSize()); h = SFXGraphics::GetFontHeight(_font); h += RING_MARGIN * 2; if (_style == STANDARD) { H = h + (_size.baseSpace * 2); } else { H = h * 2 + (_size.baseSpace * 3); } rectangle->SetTop(rectangle->GetBottom() - H); return; }// SFZSoftKeyControl::BoundImpl //
SFZSoftKeyControl::HandleBoundRequest | SFYResponder::GetSuitableBound | SFXEvent | 領域イベント[SFEVT_RESPONDER_BOUND]
[ protected, virtual ] Void HandleBoundReal(Void);
この関数は、 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL, rectangle)] を受信したときに呼び出されます。
実領域の変更時に追加の処理を行いたい場合は、 この関数をオーバーライドします。
開発者は、独自の処理のためにこの関数をオーバーライドできます。
デフォルトの実装では、ラベルの位置とサイズを再計算します。 また仮想領域を実領域に一致させます。 そして再描画領域に登録します。
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL) イベントの送信 | |
---|---|
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL) イベントは SFYResponder::SetRealBound 関数の呼び出しによって実領域が変化したときに発生します。 |
実領域が変化した時の処理 | |
---|---|
この仮想関数をオーバーライドする以外に、 領域イベント専用ハンドラ[XANDLER_DECLARE_VOIDBOUND]を定義・実装し レスポンダに登録して行うことも可能です。 実領域の変更処理は、最初に SFYWidget::HandleBoundReal 仮想関数を実行し、 次に領域イベント専用ハンドラを登録した順に実行して行われます。 領域イベント専用ハンドラを宣言し登録する手間が省けるので、 通常はこの仮想関数をオーバーライドして処理を記述します。 |
この関数の内部実装は以下の通りです。
enum SoftkeyEnum { SELECT, SOFTKEY_1, SOFTKEY_2, STANDARD_LIMIT, SOFTKEY_3 = STANDARD_LIMIT, SOFTKEY_4, EXTENSION_LIMIT, UP = EXTENSION_LIMIT, DOWN, LEFT, RIGHT, SOFTKEY_LIMIT }; enum StyleEnum { STANDARD = 0, EXTENSION, DEFAULT_STYLE = STANDARD }; /*protected virtual */Void SFZSoftKeyControl::HandleBoundReal(Void) { SetVirtualBound(SFXRectangle(SFXGrid::ZeroInstance(), GetRealBound().GetSize())); RelocateLabelShape(); return; }// SFZSoftKeyControl::HandleBoundReal // /*private */Void SFZSoftKeyControl::BoundImpl(SFXRectanglePtr rectangle) const { SFXDevice device; SInt16 h; SInt16 H; rectangle->Set(SFXGrid::ZeroInstance(), device.GetScreenSize()); h = SFXGraphics::GetFontHeight(_font); h += RING_MARGIN * 2; if (_style == STANDARD) { H = h + (_size.baseSpace * 2); } else { H = h * 2 + (_size.baseSpace * 3); } rectangle->SetTop(rectangle->GetBottom() - H); return; }// SFZSoftKeyControl::BoundImpl //
[ protected, virtual, const ] Void HandleBoundRequest( SFXRectanglePtr rectangle // 計算された矩形 );
この関数は、 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST, rectangle)] を受信したときに呼び出されます。
このレスポンダに最適なサイズと始点を計算します。
デフォルトの実装は、携帯電話画面の中でスタイルに応じたソフトキーコントロールの最適な領域と始点を計算します。
注意事項 | |
---|---|
この関数の実装は、SFZSoftKeyControl::HandleBoundOptimize 関数と同一です。 引数の rectangle に矩形領域が設定されても無視され、携帯電話の画面全体から最適な領域が計算されます。 通常の HandleBoundRequest 関数では計算結果に最適なサイズだけが返りますが、 SFZSoftKeyControl::HandleBoundRequest 関数では、 領域イベントの P32 パラメータとして渡された rectangle 引数の origin 要素(始点)に最適な位置も計算されて返ります。 そのため、SFZSoftKeyControl クラスでは SFYResponder::GetSuitableBound 関数を呼び出してから実領域の始点を設定する必要はありません。 |
領域イベント[(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST) イベント] | |||||
---|---|---|---|---|---|
SFYResponder::GetSuitableBound 関数は、 引数に何も指定しない場合は 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST, rectangle)] をレスポンダに送信します。 SFYWidget クラスを継承するレスポンダが領域イベントを受信すると、 SFYWidget::SFYWidget コンストラクタで最初に登録した領域イベント専用ハンドラの処理により、 SFYWidget::HandleBoundRequest 仮想関数が呼び出されます。 ※ 領域イベントの P32 パラメータ rectangle には実領域が初期設定されています。
|
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST) イベント受信時の最適な領域計算 | |
---|---|
SFYWidget::HandleBoundRequest 仮想関数をオーバーライドする以外に、 領域イベント専用ハンドラ[XANDLER_DECLARE_VOIDBOUND]を定義・実装し レスポンダに登録して行うことも可能です。 最適な領域の計算は、最初に SFYWidget::HandleBoundRequest 仮想関数を実行し、 次に領域イベント専用ハンドラを登録した順に実行して行われます。 領域イベント専用ハンドラを宣言し登録する手間が省けるので、 通常は SFYWidget::HandleBoundRequest 仮想関数をオーバーライドして処理を記述します。 |
この関数の内部実装は以下の通りです。
enum { ARROW_BASE_LENGTH = 6, ARROW_HEIGHT = 3, BASE_SPACE = 2, RING_MARGIN = 3, RING_SIZE = 1 }; enum StyleEnum { STANDARD = 0, EXTENSION, DEFAULT_STYLE = STANDARD }; /*protected virtual */Void SFZSoftKeyControl::HandleBoundRequest(SFXRectanglePtr rectangle) const { BoundImpl(rectangle); return; }// SFZSoftKeyControl::HandleBoundRequest // /*private */Void SFZSoftKeyControl::RelocateLabelShape(Void) { SFXRectangle temp; SFXRectangle local; SFXRectangle selrect; SInt16 w; SInt16 h; SInt16 W; SInt16 H; local = GetLocalBound(); W = local.GetWidth(); H = local.GetHeight(); if (_style == STANDARD) { w = (W - _size.baseSpace * 4) / 3; h = (H - _size.baseSpace * 2); temp = SFXRectangle(_size.baseSpace, _size.baseSpace, w, h); _rect[SOFTKEY_1] = temp; _rect[SELECT] = temp.Offset(w + _size.baseSpace, 0); _rect[SOFTKEY_2] = temp.Offset(w + _size.baseSpace, 0); } else { // extention style w = (W - _size.baseSpace * 6 - _size.arrowHeight * 2) / 3; h = (H - _size.baseSpace * 3) / 2; { SInt16 subH = _size.baseSpace * 4 + _size.arrowHeight * 2; if ((h + subH) > H) { h = H - subH; ASSERT((h > 0)); } } temp = SFXRectangle(SFXGrid::ZeroInstance(), SFXSize(w, h)); _rect[SOFTKEY_1] = temp.Offset(_size.baseSpace, _size.baseSpace); _rect[SOFTKEY_3] = temp.SnapBottom(H - _size.baseSpace); _rect[SOFTKEY_4] = temp.Offset(w * 2 + _size.baseSpace * 4 + _size.arrowHeight * 2, 0); _rect[SOFTKEY_2] = temp.SnapTop(_size.baseSpace); _rect[SELECT] = temp.SnapCenterMiddle(local.GetCenterMiddle()); temp = SFXRectangle(SFXGrid::ZeroInstance(), SFXSize(_size.arrowBaseLength, _size.arrowHeight)); _rect[UP] = temp.SnapCenterMiddle(SFXGrid(W / 2, (H - h) / 4)); _rect[DOWN] = temp.SnapCenterMiddle(SFXGrid(W / 2, H - (H - h) / 4)); temp = SFXRectangle(SFXGrid::ZeroInstance(), SFXSize(_size.arrowHeight, _size.arrowBaseLength)); temp.SnapMiddle(H / 2); _rect[LEFT] = temp.SnapRight(_rect[SELECT].GetLeft() - _size.baseSpace - 1); _rect[RIGHT] = temp.SnapLeft(_rect[SELECT].GetRight() + _size.baseSpace); } return; }// SFZSoftKeyControl::RelocateLabelShape //
SFZSoftKeyControl::HandleBoundOptimize | SFYResponder::GetSuitableBound | SFXEvent | 実領域 | 領域イベント[SFEVT_RESPONDER_BOUND]
[ protected, virtual ] Void HandleBoundVirtual(Void);
この関数は、領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL, rectangle)] を受信したときに呼び出されます。
仮想領域の変更時に追加の処理を行いたい場合は、この関数をオーバーライドします。
デフォルトの実装は、仮想領域を実領域のサイズに合わせます。
領域イベント[(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL) イベント] | |
---|---|
SFYResponder::SetRealBound / SFYResponder::SetVirtualBound 関数は、 この関数内の処理により仮想領域が変化すると、 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL, rectangle)] をレスポンダに送信します。 SFYWidget クラスを継承するレスポンダが領域イベントを受信すると、 SFYWidget::SFYWidget コンストラクタで最初に登録した領域イベント専用ハンドラの処理により、 SFYWidget::HandleBoundVirtual 仮想関数が呼び出されます。 ※ 領域イベントの P32 パラメータ rectangle には変更後の仮想領域が設定されています。 |
仮想領域の変更処理 | |
---|---|
SFYWidget::HandleBoundVirtual 仮想関数をオーバーライドする以外に、 領域イベント専用ハンドラ[XANDLER_DECLARE_VOIDBOUND]を定義・実装し レスポンダに登録して行うことも可能です。 仮想領域の変更処理は、最初に SFYWidget::HandleBoundVirtual 仮想関数を実行し、 次に領域イベント専用ハンドラを登録した順に実行して行われます。 領域イベント専用ハンドラを宣言し登録する手間が省けるので、 通常は SFYWidget::HandleBoundVirtual 仮想関数をオーバーライドして処理を記述します。 |
この関数の内部実装は以下の通りです。
/*protected virtual */Void SFZSoftKeyControl::HandleBoundVirtual(Void) { SetVirtualBound(SFXRectangle(SFXGrid::ZeroInstance(), GetRealBound().GetSize())); return; }// SFZSoftKeyControl::HandleBoundVirtual //
[ protected, virtual, const ] Void HandleRenderRequest( SFXGraphicsPtr graphics // グラフィックスオブジェクト );
この関数は、 描画イベント [SFXEvent(SFEVT_RESPONDER_RENDER, SFP16_RENDER_REQUEST, graphics)] を受信したときに呼び出されます。
独自の描画処理を行いたい場合は、この関数をオーバーライドします。
デフォルトの実装は、ソフトキーコントロールを描画します。
レスポンダの描画手順 | |||||
---|---|---|---|---|---|
|
この関数の内部実装は以下の通りです。
enum SoftkeyEnum { SELECT, SOFTKEY_1, SOFTKEY_2, STANDARD_LIMIT, SOFTKEY_3 = STANDARD_LIMIT, SOFTKEY_4, EXTENSION_LIMIT, UP = EXTENSION_LIMIT, DOWN, LEFT, RIGHT, SOFTKEY_LIMIT }; enum StyleEnum { STANDARD = 0, EXTENSION, DEFAULT_STYLE = STANDARD }; /*protected virtual */Void SFZSoftKeyControl::HandleRenderRequest(SFXGraphicsPtr graphics) const { UInt32 i; SFCError error(SFERR_NO_ERROR); if (!IsCacheValid()) { error = RebuildCache(); } if (error == SFERR_NO_ERROR) { if (GetStyle() == STANDARD) { for (i = 0; i < STANDARD_LIMIT; ++i) { SoftkeyEnumConst si(static_cast<SoftkeyEnum>(i)); if (GetCacheLabelEnable(si)) { SFXRectangle temp = DrawRectangularFrame(graphics, GetLabelRectangle(si), GetCacheBackColor(si), GetCacheFrameColor(si)); DrawImage(graphics, temp, GetCacheImage(si)); DrawText(graphics, temp, GetCacheText(si), GetCacheForeColor(si)); } } } else { for (i = 0; i < EXTENSION_LIMIT; ++i) { SoftkeyEnumConst si(static_cast<SoftkeyEnum>(i)); if (GetCacheLabelEnable(si)) { SFXRectangle temp = DrawRectangularFrame(graphics, GetLabelRectangle(si), GetCacheBackColor(si), GetCacheFrameColor(si)); DrawImage(graphics, temp, GetCacheImage(si)); DrawText(graphics, temp, GetCacheText(si), GetCacheForeColor(si)); } } for (; i < SOFTKEY_LIMIT; ++i) { SoftkeyEnumConst si(static_cast<SoftkeyEnum>(i)); if (GetCacheLabelEnable(si)) { graphics->FillTriangle( InscribedTriangle(GetLabelRectangle(si), si), GetCachePress(si) ? GetCacheForeColor(si) : GetCacheBackColor(si) ); } } } } return; }// SFZSoftKeyControl::HandleRenderRequest // /*private */Void SFZSoftKeyControl::DrawText(SFXGraphicsPtr graphics, SFXRectangleConstRef rectangle, SFXWideStringConstRef text, SFXRGBColorConstRef fore) const { SFXRectangle rcText(rectangle); graphics->SetFont(_font); rcText.AddY(graphics->GetFontDescent() / 2); graphics->DrawSingleText(text, rcText, fore); return; }// SFZSoftKeyControl::DrawText //
SFZSoftKeyControl::DrawImage | SFZSoftKeyControl::DrawRectangularFrame | SFYResponder::Invalidate | SFYResponder::Render | SFYResponder::InvokeBackward | 描画イベント[SFEVT_RESPONDER_RENDER] | 描画イベント専用ハンドラ[XANDLER_DECLARE_VOIDRENDER] | 描画処理
この関数は、ソフトキーメニューが作成された直後に呼び出されます。
ソフトキーメニューが作成された直後に追加の処理を行いたい場合は、この関数をオーバーライドします。
デフォルトの実装は、SFERR_NO_ERROR を返します。
この関数の内部実装は以下の通りです。
/*protected virtual */SFCError SFZSoftKeyControl::HandleSoftMenuCreate(UInt32 key) { unused(key); return SFERR_NO_ERROR; }// SFZSoftKeyControl::HandleSoftMenuCreate //
この関数は、ソフトキーメニューが破棄される直前に呼び出されます。
ソフトキーメニューが破棄される直前に追加の処理を行いたい場合は、この関数をオーバーライドします。
デフォルトの実装は、何も行いません。
この関数の内部実装は以下の通りです。
/*protected virtual */Void SFZSoftKeyControl::HandleSoftMenuDestroy(UInt32 key) { unused(key); return; }// SFZSoftKeyControl::HandleSoftMenuDestroy //
この関数は、 スタイルイベント [SFEVT_RESPONDER_STYLE]を受信したときに呼び出されます。
スタイルイベントは、以下の項目が変更されたときに発生します。
独自の処理を行いたい場合は、この関数をオーバーライドします。
デフォルトの実装は、ラベルの位置と大きさやコントロールの実領域を再計算します。
この関数の内部実装は以下の通りです。
enum { ARROW_BASE_LENGTH = 6, ARROW_HEIGHT = 3, BASE_SPACE = 2, RING_MARGIN = 3, RING_SIZE = 1 }; enum StyleEnum { STANDARD = 0, EXTENSION, DEFAULT_STYLE = STANDARD }; /*protected virtual */Void SFZSoftKeyControl::HandleStyle(UInt16 style) { SFXRectangle rectangle; unused(style); BoundImpl(&rectangle); SetRealBound(rectangle); return; }// SFZSoftKeyControl::HandleStyle // /*private */Void SFZSoftKeyControl::BoundImpl(SFXRectanglePtr rectangle) const { SFXDevice device; SInt16 h; SInt16 H; rectangle->Set(SFXGrid::ZeroInstance(), device.GetScreenSize()); h = SFXGraphics::GetFontHeight(_font); h += RING_MARGIN * 2; if (_style == STANDARD) { H = h + (_size.baseSpace * 2); } else { H = h * 2 + (_size.baseSpace * 3); } rectangle->SetTop(rectangle->GetBottom() - H); return; }// SFZSoftKeyControl::BoundImpl //
SFZSoftKeyControl::SetStyle | SFZSoftKeyControl::SetArrowBaseLength | SFZSoftKeyControl::SetArrowHeight | SFZSoftKeyControl::SetBaseSpace | SFZSoftKeyControl::SetFont | SFXEvent | スタイルイベント [SFEVT_RESPONDER_STYLE]
[ protected, const ] Void InvalidateCache(Void);
この関数は、アクティブメニューの内容が保存されたキャッシュを一時的に無効にします。
注意 | |
---|---|
HandleRenderRequest 関数を独自にオーバーライドする場合、 SFZSoftKeyControl::IsCacheValid 関数を呼び出してキャッシュが有効かどうかを判定します。 キャッシュが無効である場合は、 SFZSoftKeyControl::RebuildCache 関数を呼び出してキャッシュを再構築する必要があります。 |
[ protected, const ] Bool IsCacheValid(Void);
この関数は、 アクティブメニューの内容が保存されたキャッシュが有効かどうかを判定します。
注意 | |
---|---|
HandleRenderRequest 関数を独自にオーバーライドする場合、 この関数を呼び出してキャッシュが有効かどうかを判定します。 キャッシュが無効である場合は、 SFZSoftKeyControl::RebuildCache 関数を呼び出してキャッシュを再構築する必要があります。 |
Void CustomSoftKeyControl::HandleRenderRequest(SFXGraphicsPtr graphics) const { SFCError error(SFERR_NO_ERROR); // キャッシュが無効ならば、 if (!IsCacheValid()) { // キャッシュを再構築する error = RebuildCache(); } if (error == SFERR_NO_ERROR) { // 独自の描画処理 // ... } }
[ public, static ] SFZSoftKeyControlSmp NewInstance( SFCErrorPtr exception = null // エラー値 );
関数内部で発生したエラー値を返します。
この関数は、SFZSoftKeyControl クラスの新しいインスタンスを作成します。
インスタンスの作成に成功した場合は null 以外のポインタを返します。 失敗した場合は、null ポインタを返します。
exception 引数を指定した場合、 この引数にはエラー値が返ります。
以下は、ソフトキーコントロールのインスタンスを生成するためのコードです。
// ソフトキーコントロールのインスタンスを生成する SFZSoftKeyControlSmp _softkey; SFCError error; if ((_softkey = SFZSoftKeyControl::NewInstance(&error)) != null) { // ... }
[ protected, const ] SFCError RebuildCache(Void);
この関数は、アクティブメニューの内容を保存するキャッシュを再構築します。
注意 | |
---|---|
HandleRenderRequest 関数を独自にオーバーライドする場合、 SFZSoftKeyControl::IsCacheValid 関数を呼び出してキャッシュが有効かどうかを判定します。 キャッシュが無効である場合は、この関数を呼び出してキャッシュを再構築する必要があります。 |
Void CustomSoftKeyControl::HandleRenderRequest(SFXGraphicsPtr graphics) const { SFCError error(SFERR_NO_ERROR); // キャッシュが無効ならば、 if (!IsCacheValid()) { // キャッシュを再構築する error = RebuildCache(); } if (error == SFERR_NO_ERROR) { // 独自の描画処理 // ... } }
[ public ] SFCError RegisterBackColor( UInt32 key // 色キー(固有のキー) SFXRGBColorConstRef param // 設定する色 );
この関数は、ラベルまたは矢印(三角形)の背景色を登録します。
key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定すると、 SFERR_INVALID_PARAM が返ります。
注意 | |
---|---|
矢印(三角形)の背景色は、上下左右キー非押下時の色です。 |
注意 | |
---|---|
一度登録すると SFZSoftKeyControl::UnregisterColor 関数を呼び出すか、 SFZSoftKeyControl::~SFZSoftKeyControl デストラクタが呼び出されるまで色のインスタンスはヒープ上に残ります。 キーが既に存在する場合は、背景色を上書きし、 キャッシュを一時的に無効化し、 ソフトキーコントロールを再描画領域に登録します。 |
色キー "0" の背景色 | |||||
---|---|---|---|---|---|
デフォルト設定では、 色キー "0" の背景色が SFXRGBColor(0x77, 0x77, 0x77, 0x00)[灰色] として登録されてます。 SFZSoftKeyControl::SetColorKey 関数でソフトキーメニューに色キーを関連付けなかった場合、 この背景色が参照されます。 ※この背景色はメニューキー "0" のデフォルトメニューから参照されます。
|
色キーと 3 色 | |
---|---|
フレーム色、前景色、および背景色は、登録時に同じ固有の色キーによって 3 色にまとめられます。 |
SFZSoftKeyControl::UnregisterColor | SFZSoftKeyControl::RegisterFrameColor | SFZSoftKeyControl::RegisterForeColor | SFZSoftKeyControl::RegisterText | SFZSoftKeyControl::RegisterImage | SFZSoftKeyControl::SetColorKey | SFZSoftKeyControl::~SFZSoftKeyControl | SFZSoftKeyControl::InvalidateCache
[ public ] SFCError RegisterForeColor( UInt32 key // 色キー(固有のキー) SFXRGBColorConstRef param // 設定する色 );
この関数は、ラベルまたは矢印(三角形)の前景色を登録します。
key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定すると、 SFERR_INVALID_PARAM が返ります。
注意 | |
---|---|
ラベルの前景色は、テキストを描画する色です。 矢印(三角形)の前景色は、上下左右キー押下時の色です。 |
注意 | |
---|---|
一度登録すると SFZSoftKeyControl::UnregisterColor 関数を呼び出すか、 SFZSoftKeyControl::~SFZSoftKeyControl デストラクタが呼び出されるまで色のインスタンスはヒープ上に残ります。 キーが既に存在する場合は、前景色を上書きし、 キャッシュを一時的に無効化し、 ソフトキーコントロールを再描画領域に登録します。 |
色キー "0" の前景色 | |||||
---|---|---|---|---|---|
デフォルト設定では、 色キー "0" の前景色が SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00)[白色] として登録されてます。 SFZSoftKeyControl::SetColorKey 関数でソフトキーメニューに色キーを関連付けなかった場合、 この前景色が参照されます。 ※この前景色はメニューキー "0" のデフォルトメニューから参照されます。
|
色キーと 3 色 | |
---|---|
フレーム色、前景色、および背景色は、登録時に同じ固有の色キーによって 3 色にまとめられます。 |
SFZSoftKeyControl::UnregisterColor | SFZSoftKeyControl::RegisterFrameColor | SFZSoftKeyControl::RegisterBackColor | SFZSoftKeyControl::RegisterText | SFZSoftKeyControl::RegisterImage | SFZSoftKeyControl::SetColorKey | SFZSoftKeyControl::~SFZSoftKeyControl | SFZSoftKeyControl::InvalidateCache
[ public ] SFCError RegisterFrameColor( UInt32 key // 色キー(固有のキー) SFXRGBColorConstRef param // 設定する色 );
この関数は、ラベルのフレーム色を登録します。
key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定すると、 SFERR_INVALID_PARAM が返ります。
注意 | |
---|---|
一度登録すると SFZSoftKeyControl::UnregisterColor 関数を呼び出すか、 SFZSoftKeyControl::~SFZSoftKeyControl デストラクタが呼び出されるまで色のインスタンスはヒープ上に残ります。 キーが既に存在する場合は、フレーム色を上書きし、 キャッシュを一時的に無効化し、 ソフトキーコントロールを再描画領域に登録します。 |
色キー "0" のフレーム色 | |||||
---|---|---|---|---|---|
デフォルト設定では、 色キー "0" のフレーム色が SFXRGBColor(0xDD, 0xDD, 0xDD, 0xDD)[薄灰色] として登録されてます。 SFZSoftKeyControl::SetColorKey 関数でソフトキーメニューに色キーを関連付けなかった場合、 このフレーム色が参照されます。 ※このフレーム色はメニューキー "0" のデフォルトメニューから参照されます。
|
色キーと 3 色 | |
---|---|
フレーム色、前景色、および背景色は、登録時に同じ固有の色キーによって 3 色にまとめられます。 |
SFZSoftKeyControl::UnregisterColor | SFZSoftKeyControl::RegisterForeColor | SFZSoftKeyControl::RegisterBackColor | SFZSoftKeyControl::RegisterText | SFZSoftKeyControl::RegisterImage | SFZSoftKeyControl::SetColorKey | SFZSoftKeyControl::~SFZSoftKeyControl | SFZSoftKeyControl::InvalidateCache
[ public ] SFCError RegisterImage( UInt32 key // 画像キー(固有のキー) SFXPathConstRef path // リソースファイルのパス );
[ public ] SFCError RegisterImage( UInt32 key // 画像キー(固有のキー) SFXPathConstRef path // リソースファイルのパス UInt16 id // リソース ID );
[ public ] SFCError RegisterImage( UInt32 key // 画像キー(固有のキー) SFBImageSmpConstRef param // 画像 );
この関数は、ラベルの画像を登録します。
key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定すると、 SFERR_INVALID_PARAM が返ります。
画像を直接、またはリソースファイルから読み込むように設定できます。 但し、リソースファイルのパスが正しくないときは、SFERR_INVALID_PARAM が返ります。
注意 | |
---|---|
一度登録すると SFZSoftKeyControl::UnregisterImage 関数を呼び出すか、 SFZSoftKeyControl::~SFZSoftKeyControl デストラクタが呼び出されるまで画像はヒープ上に残ります。 キーが既に存在する場合は、 そのキーにより参照されていた既存の画像を解放し、 指定された画像に置き換えます。 同時に、キャッシュを一時的に無効化し、 ソフトキーコントロールを再描画領域に登録します。 |
画像キー "0" の画像 | |||||
---|---|---|---|---|---|
デフォルト設定では、 画像キー "0" の画像が SFBImageSmp::EmptyInstance() として登録されてます。 SFZSoftKeyControl::SetImageKey 関数でソフトキーメニューに画像キーを関連付けなかった場合、 この画像が参照されます。 ※この画像はメニューキー "0" のデフォルトメニューから参照されます。
|
SFZSoftKeyControl::UnregisterImage | SFZSoftKeyControl::GetImage | SFZSoftKeyControl::RegisterImageRange | SFZSoftKeyControl::RegisterText | SFZSoftKeyControl::RegisterFrameColor | SFZSoftKeyControl::RegisterForeColor | SFZSoftKeyControl::RegisterBackColor | SFZSoftKeyControl::SetImageKey | SFZSoftKeyControl::InvalidateCache | SFXBrewPointer::EmptyInstance | SFZSoftKeyControl::~SFZSoftKeyControl | SFBImage
[ public ] SFCError RegisterImageRange( UInt32 originKey // 起点となる画像キー SFXPathConstRef path // リソースファイルのパス UInt16 start // 開始のリソース ID UInt16 end // 終了のリソース ID );
この関数は、ラベルの画像をまとめて登録します。
画像キーの範囲 [key, key + (end - start)] と リソース ID の範囲 [start, end] が対応します。
Tip | |
---|---|
管理を簡素化するために、 起点となるテキストキーの値と開始のリソース ID の値を一致させることを推奨します。 |
注意 | |
---|---|
一度登録すると SFZSoftKeyControl::UnregisterImage 関数を呼び出すか、 SFZSoftKeyControl::~SFZSoftKeyControl デストラクタが呼び出されるまで画像はヒープ上に残ります。 キーが既に存在する場合は、 そのキーにより参照されていた既存の画像を解放し、 指定された画像に置き換えます。 同時に、キャッシュを一時的に無効化し、 ソフトキーコントロールを再描画領域に登録します。 |
リソースファイルのパス ("resource.bar") のリソース ID の範囲 [IDI_START, IDI_END] に相当する画像を、 画像キー (KEY_IMAGE_ORIGIN) を起点として登録します。
// ソフトキーコントロールのインスタンスは作成されていると仮定
SFZSoftKeyControlSmp softkey = USRApplication::GetSoftKey();
softkey->RegisterImageRange(KEY_IMAGE_ORIGIN, SFXPath("resource.bar"), IDI_START, IDI_END);
SFZSoftKeyControl::RegisterImage | SFZSoftKeyControl::UnregisterImage | SFZSoftKeyControl::RegisterTextRange | SFZSoftKeyControl::SetImageKey | SFZSoftKeyControl::~SFZSoftKeyControl
[ public ] SFCError RegisterText( UInt32 key // テキストキー(固有のキー) SFXPathConstRef path // リソースファイルのパス UInt16 id // リソース ID );
[ public ] SFCError RegisterText( UInt32 key // テキストキー(固有のキー) SFXWideStringConstRef param // テキスト );
この関数は、ラベルのテキストを登録します。
key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定すると、 SFERR_INVALID_PARAM が返ります。
テキストを直接、またはリソースファイルから読み込むように設定できます。 但し、リソースファイルのパスが正しくないときは、SFERR_INVALID_PARAM が返ります。
注意 | |
---|---|
一度登録すると SFZSoftKeyControl::UnregisterText 関数を呼び出すか、 SFZSoftKeyControl::~SFZSoftKeyControl デストラクタが呼び出されるまでテキストはヒープ上に残ります。 キーが既に存在する場合は、 そのキーにより参照されていた既存のテキストを解放し、 指定されたテキストに置き換えます。 同時に、キャッシュを一時的に無効化し、 ソフトキーコントロールを再描画領域に登録します。 |
テキストキー "0" のテキスト | |||||
---|---|---|---|---|---|
デフォルト設定では、 テキストキー "0" のテキストが SFXWideString::EmptyInstance() として登録されてます。 SFZSoftKeyControl::SetTextKey 関数でソフトキーメニューにテキストキーを関連付けなかった場合、 このテキストが参照されます。 ※このテキストはメニューキー "0" のデフォルトメニューから参照されます。
|
SFZSoftKeyControl::UnregisterText | SFZSoftKeyControl::GetText | SFZSoftKeyControl::RegisterTextRange | SFZSoftKeyControl::RegisterImage | SFZSoftKeyControl::RegisterFrameColor | SFZSoftKeyControl::RegisterForeColor | SFZSoftKeyControl::RegisterBackColor SFZSoftKeyControl::SetTextKey | SFZSoftKeyControl::~SFZSoftKeyControl | SFXWideString::EmptyInstance | SFXWideString
[ public ] SFCError RegisterTextRange( UInt32 originKey // 起点となるテキストキー SFXPathConstRef path // リソースファイルのパス UInt16 start // 開始のリソース ID UInt16 end // 終了のリソース ID );
この関数は、ラベルのテキストをまとめて登録します。
テキストキーの範囲 [key, key + (end - start)] と リソース ID の範囲 [start, end] が対応します。
Tip | |
---|---|
管理を簡素化するために、 起点となるテキストキーの値と開始のリソース ID の値を一致させることを推奨します。 |
注意 | |
---|---|
一度登録すると SFZSoftKeyControl::UnregisterText 関数を呼び出すか、 SFZSoftKeyControl::~SFZSoftKeyControl デストラクタが呼び出されるまでテキストはヒープ上に残ります。 キーが既に存在する場合は、 そのキーにより参照されていた既存のテキストを解放し、 指定されたテキストに置き換えます。 同時に、キャッシュを一時的に無効化し、 ソフトキーコントロールを再描画領域に登録します。 |
リソースファイルのパス ("resource.bar") のリソース ID の範囲 [IDS_START, IDS_END] に相当するテキストを、 テキストキー (KEY_TEXT_ORIGIN) を起点として登録します。
// ソフトキーコントロールのインスタンスは作成されていると仮定
SFZSoftKeyControlSmp softkey = USRApplication::GetSoftKey();
softkey->RegisterTextRange(KEY_TEXT_ORIGIN, SFXPath("resource.bar"), IDS_START, IDS_END);
SFZSoftKeyControl::RegisterText | SFZSoftKeyControl::UnregisterText | SFZSoftKeyControl::RegisterImageRange | SFZSoftKeyControl::SetTextKey | SFZSoftKeyControl::~SFZSoftKeyControl
この関数は、拡張スタイルのソフトキーメニューに表示される矢印ラベルの底辺の長さを設定します。[単位:ピクセル]
デフォルト値: 6 ピクセル
注意 | |
---|---|
矢印の底辺の長さが変更されると、 スタイルイベント [SFXEvent(SFEVT_RESPONDER_STYLE, SFP16_STYLE_ALIGN, 0)] が発生します。 同時に、ソフトキーコントロールを再描画領域に登録します。 |
矢印ラベルの底辺の長さ | |
---|---|
上と下の矢印ラベルの場合、三角形の横幅を意味します。 左と右の矢印ラベルの場合、三角形の縦幅を意味します。 4 つの矢印ラベルの底辺の長さはすべて同じです。 |
SFZSoftKeyControl::GetArrowBaseLength | SFZSoftKeyControl::SetArrowHeight | SFZSoftKeyControl::SetStyle | SFXEvent | スタイルイベント [SFEVT_RESPONDER_STYLE]
この関数は、拡張スタイルのソフトキーメニューに表示される矢印ラベルの高さを設定します。[単位:ピクセル]
デフォルト値: 3 ピクセル
注意 | |
---|---|
矢印ラベルの高さが変更されると、 スタイルイベント [SFXEvent(SFEVT_RESPONDER_STYLE, SFP16_STYLE_ALIGN, 0)] が発生します。 同時に、ソフトキーコントロールを再描画領域に登録します。 |
矢印ラベルの底辺の長さ | |
---|---|
上と下の矢印ラベルの場合、三角形の縦幅を意味します。 左と右の矢印ラベルの場合、三角形の横幅を意味します。 4 つの矢印ラベルの高さはすべて同じです。 |
SFZSoftKeyControl::GetArrowHeight | SFZSoftKeyControl::SetArrowBaseLength | SFZSoftKeyControl::SetStyle | SFXEvent | スタイルイベント [SFEVT_RESPONDER_STYLE]
この関数は、ソフトキーコントロールの境界線とラベル間のスペース値[基準スペース]を設定します。[単位:ピクセル]
デフォルト値: 2 ピクセル
注意 | |
---|---|
基準スペースが変更されると、 スタイルイベント [SFXEvent(SFEVT_RESPONDER_STYLE, SFP16_STYLE_ALIGN, 0)] が発生します。 同時に、ソフトキーコントロールを再描画領域に登録します。 |
注意 | |
---|---|
ラベル同士の間隔もこの値になります。 |
[ public ] SFCError SetColorKey( UInt32 menuKey // メニューキー(固有のキー) SoftkeyEnum index // ラベル番号 UInt32 colorKey // 設定する色キー(固有のキー) );
[ public ] SFCError SetColorKey( UInt32 menuKey // メニューのキー(固有のキー) UInt32ConstPtr keys // 色キーの配列を表すポインタ UInt32 num // ラベルの数 );
この関数は、指定されたソフトキーメニューのラベルに色キーを設定します。
key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定したとき、 またはmenuKey 引数に登録されていないメニューキーを指定したときは、 SFERR_INVALID_PARAM が返ります。
引数に配列を指定して、複数のラベルの色キーをまとめて設定することも可能です。
注意 | |
---|---|
ソフトキーコントロールを再描画領域に登録します。 |
デフォルトの色キー | |
---|---|
ソフトキーメニューのラベルに色キーを設定しない場合、色キー "0" が参照されます。 色キー "0" のフレーム色、前景色、背景色の初期値は、以下の通りです。
|
デフォルトメニュー | |
---|---|
デフォルトメニュー(メニューキー "0")では、色キーは "0" に初期設定されます。 デフォルトメニューについては、SFZSoftKeyControl::CreateMenu 関数の解説を参照してください。 |
SFZSoftKeyControl::GetColorKey SFZSoftKeyControl::RegisterForeColor | SFZSoftKeyControl::RegisterBackColor | SFZSoftKeyControl::RegisterFrameColor | SFZSoftKeyControl::CreateMenu
[ public ] Void SetDefaultBackColor( SFXRGBColorConstRef param // ラベルのデフォルト背景色 );
この関数は、色キーが不正な場合に使用される、 ラベルのデフォルト背景色を設定します。
デフォルト値: SFXRGBColor(0x77, 0x77, 0x77, 0x00)[灰色]
注意 | |
---|---|
メニューキー "0"(デフォルトメニュー)が参照する色キー "0" の背景色は、 SFXRGBColor(0x77, 0x77, 0x77, 0x00)[灰色]で初期化されます。 |
[ public ] Void SetDefaultForeColor( SFXRGBColorConstRef param // ラベルのデフォルト前景色 );
この関数は、色キーが不正な場合に使用される、 ラベルのデフォルト前景色を設定します。
デフォルト値: SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00)[白色]
注意 | |
---|---|
メニューキー "0"(デフォルトメニュー)が参照する色キー "0" の前景色は、 SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00)[白色]で初期化されます。 |
[ public ] Void SetDefaultFrameColor( SFXRGBColorConstRef param // ラベルのデフォルトフレーム色 );
この関数は、色キーが不正な場合に使用される、 ラベルのデフォルトフレーム色を設定します。
デフォルト値: SFXRGBColor(0xDD, 0xDD, 0xDD, 0xDD)[薄灰色]
注意 | |
---|---|
メニューキー "0"(デフォルトメニュー)が参照する色キー "0" のフレーム色は、 SFXRGBColor(0xDD, 0xDD, 0xDD, 0xDD)[薄灰色]で初期化されます。 |
[ public ] SFCError SetEnable( UInt32 menuKey // メニューキー(固有のキー) SoftkeyEnum index // ラベル番号 Bool enable // 有効状態 );
[ public ] SFCError SetEnable( UInt32 menuKey // メニューキー(固有のキー) BoolConstPtr enables // 有効状態を表す配列のポインタ UInt32 num // ラベルの数 );
この関数は、指定されたメニューキーとラベル番号に対応するラベルの有効状態を設定します。
デフォルト値: SFZSoftKeyControl::CreateMenu 関数でソフトキーメニューを作成したとき、 すべてのラベルは有効状態になっています。
注意 | |
---|---|
ソフトキーコントロールを再描画領域に登録します。 |
注意 | |
---|---|
上下左右キーラベルが有効状態のとき、キー押下イベントを受信すると矢印を背景色から前景色へ変化させます。 |
ラベル領域の非表示 | |
---|---|
ソフトキーメニューにある各ラベルの有効状態は、デフォルト設定では有効("true")になっています。 そのため、そのままではラベル領域は表示されます。 ラベル領域を非表示にするには、 SFZSoftKeyControl::SetEnable 関数を使用して有効状態を無効("false")に設定する必要があります。 |
注意 | |
---|---|
ラベルの有効状態を配列で一度に設定することもできます。 |
この関数は、ラベルのテキストを描画するフォントを設定します。
デフォルト値: AEE_FONT_NORMAL
[ public ] SFCError SetImageKey( UInt32 menuKey // メニューキー(固有のキー) SoftkeyEnum index // ラベル番号 UInt32 imageKey // 設定する画像キー(固有のキー) );
[ public ] SFCError SetImageKey( UInt32 menuKey // メニューキー(固有のキー) UInt32ConstPtr keys // 画像キーの配列を表すポインタ UInt32 num // ラベルの数 );
この関数は、指定されたソフトキーメニューのラベルに画像キーを設定します。
key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定したとき、 またはmenuKey 引数に登録されていないメニューキーを指定したときは、 SFERR_INVALID_PARAM が返ります。
引数に配列を指定して、複数のラベルの画像キーをまとめて設定することも可能です。
注意 | |
---|---|
ソフトキーコントロールを再描画領域に登録します。 |
デフォルトの画像キー | |
---|---|
ソフトキーメニューのラベルに画像キーを設定しない場合、画像キー "0" が参照されます。 画像キー "0" の画像の初期値は、 SFBImageSmp::EmptyInstance() です。 |
デフォルトメニュー | |
---|---|
デフォルトメニュー(メニューキー "0")では、画像キーは "0" に初期設定されます。 デフォルトメニューについては、SFZSoftKeyControl::CreateMenu 関数の解説を参照してください。 |
SFZSoftKeyControl::GetImageKey | SFZSoftKeyControl::RegisterImage | SFZSoftKeyControl::RegisterImageRange | SFZSoftKeyControl::CreateMenu
[ protected ] Void SetLabelRectangle( SoftkeyEnum index // ラベル番号 SFXRectangleConstRef rectangle // ラベルの領域 );
この関数は、指定されたラベルの矩形領域を設定します。
注意 | |
---|---|
コントロールの領域が変更されたときなど、 独自にラベルの領域を再計算したい場合に呼び出します。 |
// 実領域変更通知ハンドラ Void CustomSoftKeyControl::HandleBoundReal(Void) { SFXRectangle local(GetLocalBound()); SFXRectangle temp; SInt16 W(local.GetWidth()); SInt16 H(local.GetHeight()); SInt16 w, h; // 標準スタイルの場合 if (GetStyle() == STANDARD) { w = (W - GetBaseSpace() * 4) / 3; h = (H - GetBaseSpace() * 2); temp = SFXRectangle(GetBaseSpace(), GetBaseSpace(), w, h); SetLabelRectangle(SOFTKEY_1, temp); SetLabelRectangle(SELECT, temp.Offset(w + GetBaseSpace(), 0)); SetLabelRectangle(SOFTKEY_2, temp.Offset(w + GetBaseSpace(), 0)); } // 拡張スタイルの場合 else { // ... } return; }
[ public ] Void SetStyle( StyleEnum param // スタイル );
この関数は、メニューのスタイルを設定します。
3 つのラベルからなるソフトキーメニューと 9 つのラベルからなるソフトキーメニューから選択します。 前者を標準スタイル、後者を拡張スタイルと呼びます。
デフォルト値: SFZSoftKeyControl::DEFAULT_STYLE(標準スタイル)
注意 | |
---|---|
スタイルはアプリ実行時に動的に変更可能です。 メニューのスタイルが変更されると、 スタイルイベント [SFXEvent(SFEVT_RESPONDER_STYLE, SFP16_STYLE_ALIGN, 0)] が発生します。 同時に、ソフトキーコントロールを再描画領域に登録します。 |
標準スタイル:
拡張スタイル:
SFZSoftKeyControl::GetStyle | SFZSoftKeyControl::StyleEnum | SFXEvent | スタイルイベント [SFEVT_RESPONDER_STYLE]
[ public ] SFCError SetTextKey( UInt32 menuKey // メニューキー(固有のキー) SoftkeyEnum index // ラベル番号 UInt32 textKey // 設定するテキストキー(固有のキー) );
[ public ] SFCError SetTextKey( UInt32 menuKey // メニューキー(固有のキー) UInt32ConstPtr keys // テキストキーの配列を表すポインタ UInt32 num // ラベルの数 );
この関数は、指定されたソフトキーメニューのラベルにテキストキーを設定します。
key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定したとき、 またはmenuKey 引数に登録されていないメニューキーを指定したときは、 SFERR_INVALID_PARAM が返ります。
引数に配列を指定して、複数のラベルのテキストキーをまとめて設定することも可能です。
注意 | |
---|---|
ソフトキーコントロールを再描画領域に登録します。 |
デフォルトのテキストキー | |
---|---|
ソフトキーメニューのラベルにテキストキーを設定しない場合、テキストキー "0" が参照されます。 テキストキー "0" のテキストの初期値は、 SFXWideString::EmptyInstance() です。 |
デフォルトメニュー | |
---|---|
デフォルトメニュー(メニューキー "0")では、テキストキーは "0" に初期設定されます。 デフォルトメニューについては、SFZSoftKeyControl::CreateMenu 関数の解説を参照してください。 |
SFZSoftKeyControl::GetTextKey | SFZSoftKeyControl::RegisterText | SFZSoftKeyControl::RegisterTextRange | SFZSoftKeyControl::CreateMenu
[ public ] Void UnBind( SFYResponderPtr responder // レスポンダ );
[ public ] Void UnBind( SFYResponderSmpConstRef responder // レスポンダ );
この関数は、指定されたレスポンダとの関連付けを解消します。
指定されたレスポンダがこのソフトキーコントロールのソフトキーメニューと関連付けられていない場合は、 何も行われません。
注意 | |
---|---|
この関数は、内部的に SFZSoftKeyControl::Bind 関数で関連付けられたレスポンダの状態が無効状態になったときや、 SFZSoftKeyControl::~SFZSoftKeyControl デストラクタ内から内部的に呼び出されます。 |
この関数は、指定された色キーへの 3 色(フレーム色、前景色、背景色)の登録を解除します。
このとき、その 3 色(フレーム色、前景色、背景色)は解放されます。
存在しない色キーを指定された場合、何もしません。
注意 | |
---|---|
キャッシュを一時的に無効化し、 ソフトキーコントロールを再描画領域に登録します。 |
注意 | |
---|---|
ソフトキーメニューが破棄された色キーを参照している場合、 ラベルは SFZSoftKeyControl::SetDefaultBackColor / SFZSoftKeyControl::SetDefaultForeColor / SFZSoftKeyControl::SetDefaultFrameColor 関数で設定されるデフォルト色で描画されます。 |
SFZSoftKeyControl::RegisterFrameColor | SFZSoftKeyControl::RegisterForeColor | SFZSoftKeyControl::RegisterBackColor | SFZSoftKeyControl::SetDefaultBackColor | SFZSoftKeyControl::SetDefaultForeColor | SFZSoftKeyControl::SetDefaultFrameColor
この関数は、指定された画像キーへの画像の登録を解除します。
このとき、その画像は解放されます。
存在しない画像キーを指定された場合、何もしません。
注意 | |
---|---|
キャッシュを一時的に無効化し、 ソフトキーコントロールを再描画領域に登録します。 |
注意 | |
---|---|
ソフトキーメニューが破棄された画像キーを参照している場合、 画像は描画されません。 |
この関数は、指定されたテキストキーへのテキストの登録を解除します。
このとき、そのテキストは解放されます。
存在しないテキストキーを指定された場合、何もしません。
注意 | |
---|---|
キャッシュを一時的に無効化し、 ソフトキーコントロールを再描画領域に登録します。 |
注意 | |
---|---|
ソフトキーメニューが破棄されたテキストキーを参照している場合、 テキストは描画されません。 |
enum CodeEnum { CODE_TYPE = four_char_code('c', 's', 'k', 'e'), }; SFMTYPEDEFTYPE(CodeEnum)
enum KeyEnum { DEFAULT_KEY = 0, INVALID_KEY = UINT32_MAXIMUM }; SFMTYPEDEFTYPE(KeyEnum)
キー値 DEFAULT_KEY(=0)のメニューをデフォルトメニューと呼びます。
ソフトキーメニュー作成後は、 すべての要素キー(テキスト、画像、3 色)は DEFAULT_KEY にセットされます。
メニューキーや要素キーに INVALID_KEY は登録できません。
enum SoftkeyEnum { SELECT = 0, // セレクトキー SOFTKEY_1 = 1, // ソフトキー 1 SOFTKEY_2 = 2, // ソフトキー 2 SOFTKEY_3 = 3, // ソフトキー 3 SOFTKEY_4 = 4, // ソフトキー 4 UP = 5, // 上キー DOWN = 6, // 下キー LEFT = 7, // 左キー RIGHT = 8, // 右キー SOFTKEY_LIMIT = 9 // ソフトキー上限 (ソフトキーの数) STANDARD_LIMIT = 3, // 標準上限 EXTENSION_LIMIT = 5 // 拡張上限 }; SFMTYPEDEFTYPE(SoftkeyEnum)
ラベル番号として使用されます。
enum StyleEnum { STANDARD = 0, // 標準スタイル (3 つのラベル) EXTENSION, // 拡張スタイル (5 つのラベルと 4 つの上下左右キーラベル) DEFAULT_STYLE = STANDARD // デフォルト値 }; SFMTYPEDEFTYPE(StyleEnum)
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |