前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFZSoftKeyControl
ソフトキーコントロールです。
#include <SFZSoftKeyControl.h.hpp>
class SFZSoftKeyControl : public SFYControl;
SFMTYPEDEFCLASS(SFZSoftKeyControl)

継承図

SFZSoftKeyControl クラスの継承図

協調図

SFZSoftKeyControl クラスの協調図

解説

■ 仕様と使い方

ソフトキーコントロール(SFZSoftKeyControl)は、 ソフトキーのキーイベントを処理するコントロールです。 このコントロールは、画面最下部にソフトキーメニューを表示し、ソフトキーのキーイベント[SFEVT_KEY]を受信すると、 現在表示されているソフトキーメニューに関連付けられているレスポンダにソフトキーイベント[SFEVT_RESPONDER_SOFTKEY]を送信します。

ソフトキーコントロールには、以下の 2 種類が存在します。 (標準スタイルがデフォルトです)

  1. 標準スタイル: ソフトキーメニューが 3 つのソフトキーラベルから構成される[デフォルト]
  2. 拡張スタイル: ソフトキーメニューが 5 つのソフトキーラベルと 4 つの上下左右キーラベルから構成される

図 432. 標準スタイル


標準スタイル

標準スタイル: ソフトキーメニューが 3 つのソフトキーラベルから構成される[デフォルト]

図 433. 拡張スタイル


拡張スタイル

拡張スタイル: ソフトキーメニューが 5 つのソフトキーラベルと 4 つの上下左右キーラベルから構成される

[Caution] 表記上の注意

SFZSoftKeyControl クラスの説明では、ラベルはソフトキーラベル、メニューはソフトキーメニューを意味します。

■ ソフトキーコントロールのレイアウト

標準スタイル:

拡張スタイル:

[Note] ソフトキーコントロールの背景色

ソフトキーコントロール(SFZSoftKeyControl)のデフォルトの背景色は、 SFXRGBColor(0xCC, 0xCC, 0xCC, 0x00) [灰色]です。

この背景色は、SFYWidget::SetBackgroundColor 関数を使用して変更可能です。

■ ソフトキーコントロールの機能

  1. 携帯電話の画面最下部に表示される複数のソフトキーメニューを管理します。
  2. ソフトキーメニューを構成する各種ラベル(セレクトキー、ソフトキー 1 〜 4、上下左右キーのラベル)に関する 『テキスト、画像、3 色(※)』の要素を管理します。
  3. ソフトキーメニューとレスポンダの関連付け(バインド)を行います。
  4. 『アクティブレスポンダ(※)』にバインドされたソフトキーメニュー(『アクティブメニュー(※)』)を表示します。
  5. ソフトキー 1 〜 4 のキーイベント[SFEVT_KEY]を受信し、 『アクティブレスポンダ(※)』にソフトキーイベント[SFEVT_RESPONDER_SOFTKEY]を送信します。
[Note] 『テキスト、画像、3 色』の要素

ソフトキーメニューを構成する各種ラベルに関する 『テキスト、画像、3 色』の要素は、 固有のキーで管理され、複数のラベル間で共有できます。

3 色とは、フレーム色、前景色、および背景色を表します。

[Note] アクティブレスポンダ

『アクティブレスポンダ』とは、 ソフトキーメニューにバインドされた、 フォーカス状態にあるレスポンダの中で、 最前面に配置されているレスポンダのことです。

ソフトキーメニューにバインドされたフォーカス状態にあるレスポンダが 1 つ以上存在する場合、 つまり、『アクティブレスポンダ』が存在する場合、ソフトキーコントロールは『アクティブ』であると呼びます。

[Note] アクティブメニュー

『アクティブメニュー』とは、 『アクティブレスポンダ』にバインドされたソフトキーメニューのことです。

■ SFZSoftKeyControl クラスの使い方

以下、window1 と window2 という 2 つのウィンドウを持つ application というアプリケーションクラスについて説明します。

  1. ソフトキーコントロールのインスタンスを生成します。

    // 1 アプリにつき 1 つのソフトキーコントロールを作成する
    _softkey = SFZSoftKeyControl::NewInstance(&error);
    
  2. ソフトキーコントロールの親レスポンダを application が内部で保持するルートに設定します。 このとき、ソフトキーコントロールはルートの子レスポンダの中で常に最前面になるように自動配置されます。

    // 親レスポンダはアプリケーションクラスが内部で保持するルートに設定する
    _softkey->SetParent(GetThis());
    
  3. ソフトキーコントロールのスタイルを標準スタイル[デフォルト]または拡張スタイルに設定します。

    // スタイルを拡張スタイルに設定する
    _softkey->SetStyle(SFZSoftKeyControl::EXTENSION);
    
  4. ソフトキーコントロールの実領域を SFYResponder::GetSuitableBound() の戻り値に設定します。

    // 実領域は SFYResponder::GetSuitableBound() の戻り値に設定する
    // ※ ソフトキーコントロールのスタイルに応じて携帯電話の画面最下部に最適な実領域が自動計算される
    _softkey->SetRealBound(_softkey->GetSuitableBound());
    
    [Caution] 注意事項

    ソフトキーコントロールでは、 SFYResponder::GetSuitableBound 関数は、 引数に矩形領域が指定されても無視します。

    また、他のレスポンダの SFYResponder::GetSuitableBound 関数は最適なサイズだけを返しますが、 ソフトキーコントロールの場合、 最適なサイズの他に最適な始点も返します。 従って、実領域の始点を設定する必要はありません。

  5. ソフトキーコントロールの状態を「可視+活性+操作不能+非フォーカス」に設定します。

    // 状態を「可視+活性+操作不能+非フォーカス」に設定する
    _softkey->SetState(true, true, false, false);
    
  6. ラベルの要素(テキスト、画像、3 色)を登録します。

    [Note] 注意

    ラベルの要素(テキスト、画像、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);      // 背景色
    
  7. ソフトキーメニューを作成します。

    [Note] 注意

    ソフトキーメニューは、固有のキーで管理され、複数のレスポンダ間で共有できます。

    // ソフトキーメニューを作成する
    _softkey->CreateMenu(KEY_MENU);
    
  8. ソフトキーメニューのラベルについて、 要素(テキスト、画像、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);
    
  9. window1 のコンストラクタでは、以下の処理を行います。

    [Note] 注意

    SFZWindowSFZTextMenu などの SophiaFramework UNIVERSE 標準レスポンダの場合は、外部から同様の処理を行います。

    1. ソフトキーコントロールのインスタンスを取得します。

      // ソフトキーコントロールのインスタンスを取得する
      _softkey = USRApplication::GetSoftKey();
      
      [Note] 注意
      USRApplication::GetSoftKey() はソフトキーコントロールのインスタンスを取得するためのユーザー定義関数です。
    2. window1 をソフトキーコントロールのソフトキーメニューにバインドします。

      // ウィンドウをソフトキーコントロールのソフトキーメニューにバインドする
      _softkey->Bind(GetThis(), MENU_KEY);
      
    3. window1 にソフトキーイベント[SFEVT_RESPONDER_SOFTKEY]のハンドラを登録します。

      [Note] 注意
      ソフトキーイベントのハンドラ OnSoftkey の宣言と実装も必要です
      // ソフトキーイベントのハンドラを登録する
      RegisterHandler(
          SFXEventRange(SFEVT_RESPONDER_SOFTKEY, SFEVT_RESPONDER_SOFTKEY, AVK_SOFT1, AVK_SOFT4),
          XANDLER_INTERNAL(OnSoftkey)
      );
      // ※ソフトキーイベントのハンドラ OnSoftkey の宣言と実装も必要
      
    4. window1 のソフトキーメニューを表示する必要がなくなればアンバインドします。

      // ソフトキーコントロールからウィンドウをアンバインドする
      // バインドされたレスポンダが無効になれば自動的にアンバイドされるので省略可能
      _softkey->UnBind(GetThis());
      
  10. window2 も window1 と同様です。
[Note] ソフトキーコントロールの仕組み

ソフトキーコントロールでは、 1 つのソフトキーメニューを複数のレスポンダに関連付けることが可能です。

バインドされている何れかのレスポンダがフォーカス状態にあるとき、 ソフトキーコントロールは『アクティブ』であると呼びます。 そして、その中で最前面にあるレスポンダを『アクティブレスポンダ』と呼びます。

画面には、『アクティブレスポンダ』に関連付けられているソフトキーメニュー (『アクティブメニュー』と呼ぶ)が表示されます。

ソフトキーコントロールは、 ソフトキー 1 〜 4 のキーイベント[SFEVT_KEY]を受信し、 それをソフトキーイベント[SFEVT_RESPONDER_SOFTKEY]として 『アクティブレスポンダ』に送信します。

ソフトキーコントロールが『アクティブ』でない場合、 ソフトキーイベント[SFEVT_RESPONDER_SOFTKEY] はいずれのレスポンダにも送信されません。 このとき、画面にはメニューキー "0" で登録されている『デフォルトメニュー』が表示されます。

※ソフトキーコントロールは、セレクトキーや上下左右キーのキーイベントを処理しません。

[Note] デフォルトメニュー

デフォルトメニューとは、 ソフトキーコントロールが『アクティブ』でない、 つまり、『アクティブレスポンダ』が存在しない場合に表示されるデフォルトのソフトキーメニューのことです。

デフォルトメニューは、 ソフトキーコントロールのインスタンス生成時に自動的に作成され、メニューキー "0" で登録されています。

デフォルトメニューの初期値は、以下の通りです。

  1. 前景色: SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00)[白色]
  2. 背景色: SFXRGBColor(0x77, 0x77, 0x77, 0x00)[灰色]
  3. フレーム色: SFXRGBColor(0xDD, 0xDD, 0xDD, 0xDD)[薄灰色]
  4. ラベルのテキスト: SFXWideString::EmptyInstance()
  5. ラベルの画像: SFBImageSmp::EmptyInstance()

※1. 上記の初期値は、 SFZSoftKeyControl::SetTextKey / SFZSoftKeyControl::SetImageKey / SFZSoftKeyControl::SetColorKey 関数を使用して、 メニューキー "0" の各ラベルに関する『テキスト、画像、3 色』の要素のキーを設定することにより変更できます。

※2. ラベルの有効状態は、デフォルト設定では有効("true")であるため、そのままではラベル領域は表示されます。 ラベル領域を非表示にするには、 SFZSoftKeyControl::SetEnable 関数を使用して有効状態を無効("false")に設定する必要があります。

[Caution] ソフトキーイベント

ソフトキーコントロールの親レスポンダをルートSFZRoot)に設定すると、 下記の配信規則がルートのトレーサに自動登録されます。

// ソフトキーコントロールの親レスポンダをルートに設定した際に
// ルートのトレーサに自動登録される配信規則
root->RegisterTracer(
                   SFXEventRange(SFEVT_KEY, SFEVT_KEY, AVK_SOFT1, AVK_SOFT4),
                   SFYTracer::ORDER_FORWARD, 
                   SFYTracer::STATE_ALL, 
                   false
);

この配信規則の意味は、以下の通りです。

  1. 状態に関係なく前面から背面へソフトキー 1 〜 4 のキーイベントを子レスポンダに配信する。
  2. あるレスポンダでイベントが処理されると、 そこでイベントの配信を終了する(重複処理はしない)。

ソフトキーコントロールはルート内で最前面に配置されるレスポンダなので、 ルートの次にソフトキー 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;
}

□実行結果

参照

SFYControl

メンバ

コンストラクタ/デストラクタ
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 から継承)
垂直方向のアライメントを表す定数です。

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

解説

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

  1. タイプを "cske" に設定します。
  2. ラベルのテキストを描画するときに使用されるフォントを AEE_FONT_NORMAL に設定します。
  3. ソフトキーコントロールのスタイルを SFZSoftKeyControl::DEFAULT_STYLE に設定します。
  4. ソフトキーコントロールの境界線とラベル間のスペース値を 2 ピクセルに設定します。
  5. 拡張スタイルのソフトキーメニューに表示される矢印の底辺の長さを 6 ピクセルに設定します。
  6. 拡張スタイルのソフトキーメニューに表示される矢印ラベルの高さを 3 ピクセルに設定します。
  7. 背景色を SFXRGBColor(0xCC, 0xCC, 0xCC, 0x00) [薄灰色] に設定します。
  8. 色キー "0" のフレーム色を SFXRGBColor(0xDD, 0xDD, 0xDD, 0x00) [薄灰色] に設定します。
  9. 色キー "0" の前景色を SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00) [白色] に設定します。
  10. 色キー "0" の背景色を SFXRGBColor(0x77, 0x77, 0x77, 0x00) [灰色] に設定します。
  11. 画像キー "0" の画像を SFBImageSmp::EmptyInstance() に設定します。
  12. テキストキー "0" のテキストをSFXWideString::EmptyInstance() に設定します。
  13. ソフトキーメニューの色キーのデフォルト値を "0" に設定します。
  14. ソフトキーメニューの画像キーのデフォルト値を "0" 設定します。
  15. ソフトキーメニューのテキストキーのデフォルト値を "0" に設定します。
  16. ソフトキーメニューのラベル有効フラグのデフォルト値を "true" に設定します。
  17. メニューキー "0" のデフォルトメニューを作成します。
    [Note] 注意
    メニューキー "0" のデフォルトメニューの詳細は、SFZSoftKeyControl の解説を参照してください。
  18. 内部的に使用するキャッシュの初期化を行います。
  19. 下表にあるハンドラをレスポンダに登録します。

表 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 関数を呼び出します。
[Note] 注意

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]


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

解説

ソフトキーコントロールに関して下記の終了処理を行います。

  1. このソフトキーコントロールとレスポンダとの関連付けをすべて解消します。
  2. このソフトキーコントロールに登録されたソフトキーメニューをすべて削除します。
  3. このソフトキーコントロールに登録された画像をすべて削除します
  4. このソフトキーコントロールに登録された 3 色(フレーム色、前景色、背景色)をすべて削除します。
  5. このソフトキーコントロールに登録されたテキストをすべて削除します

内部実装

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

/*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


SFZSoftKeyControl::Bind
レスポンダとソフトキーメニューを関連付けします。
[ public ]
SFCError Bind(
    SFYResponderPtr responder   // レスポンダ
    UInt32 key                  // メニューキー
);
[ public ]
SFCError Bind(
    SFYResponderSmpConstRef responder   // レスポンダ
    UInt32 key                          // メニューキー
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • responder 引数に null を指定したとき、またはkey 引数に登録されていないメニューキーを指定したとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定されたレスポンダとこのソフトキーコントロールの指定されたソフトキーメニューを関連付けます。

ソフトキーコントロールは、 responder 引数に指定されたレスポンダが『アクティブレスポンダ(※)』であるときに限り、 key 引数に指定されたソフトキーメニューを表示します。

この関数によるレスポンダとソフトキーメニューの関連付けは、 SFZSoftKeyControl::UnBind 関数が呼び出されるまで有効です。 SFZSoftKeyControl::UnBind 関数は、ソフトキーメニューに関連付けられたレスポンダが無効状態になったときや、 SFZSoftKeyControl::~SFZSoftKeyControl デストラクタ内から内部的に呼び出されます。

[Note] アクティブレスポンダ

『アクティブレスポンダ』とは、 ソフトキーメニューにバインドされた、 フォーカス状態にあるレスポンダの中で、 最前面に配置されているレスポンダのことです。

[Note] ソフトキーコントロールの仕組み

ソフトキーコントロールでは、 1 つのソフトキーメニューを複数のレスポンダに関連付けることが可能です。

バインドされている何れかのレスポンダがフォーカス状態にあるとき、 ソフトキーコントロールは『アクティブ』であると呼びます。 そして、その中で最前面にあるレスポンダを『アクティブレスポンダ』と呼びます。

画面には、『アクティブレスポンダ』に関連付けられているソフトキーメニュー (『アクティブメニュー』と呼ぶ)が表示されます。

ソフトキーコントロールは、 ソフトキー 1 〜 4 のキーイベント[SFEVT_KEY]を受信し、 それをソフトキーイベント[SFEVT_RESPONDER_SOFTKEY]として 『アクティブレスポンダ』に送信します。

ソフトキーコントロールが『アクティブ』でない場合、 ソフトキーイベント[SFEVT_RESPONDER_SOFTKEY] はいずれのレスポンダにも送信されません。 このとき、画面にはメニューキー "0" で登録されている『デフォルトメニュー』が表示されます。

※ソフトキーコントロールは、セレクトキーや上下左右キーのキーイベントを処理しません。

参照

SFZSoftKeyControl::UnBind


SFZSoftKeyControl::ContainsColorKey
指定された色キーがこのソフトキーコントロールに登録されているかどうか判定します。
[ public, const ]
Bool ContainsColorKey(
    UInt32 key   // 色キー(固有のキー)
);

戻り値

  • 色キーが登録されているとき: true
  • そうでないとき: false

解説

この関数は、指定された色キーがこのソフトキーコントロールに登録されているかどうか判定します。

参照

SFZSoftKeyControl::SetColorKey


SFZSoftKeyControl::ContainsImageKey
指定された画像キーがこのソフトキーコントロールに登録されているかどうか判定します。
[ public, const ]
Bool ContainsImageKey(
    UInt32 key   // 画像キー(固有のキー)
);

戻り値

  • 画像キーが登録されているとき: true
  • そうでないとき: false

解説

この関数は、指定された画像キーがこのソフトキーコントロールに登録されているかどうか判定します。

参照

SFZSoftKeyControl::SetImageKey


SFZSoftKeyControl::ContainsMenuKey
指定されたメニューキーがこのソフトキーコントロールに登録されているかどうか判定します。
[ public, const ]
Bool ContainsMenuKey(
    UInt32 key   // メニューキー(固有のキー)
);

戻り値

  • メニューキーが登録されているとき: true
  • そうでないとき: false

解説

この関数は、指定されたメニューキーがこのソフトキーコントロールに登録されているかどうか判定します。

参照

SFZSoftKeyControl::CreateMenu


SFZSoftKeyControl::ContainsResponder
指定されたレスポンダがこのソフトキーコントロールにバインドされているかどうか判定します。
[ public, const ]
Bool ContainsResponder(
    SFYResponderPtr responder   // レスポンダ
);

戻り値

  • レスポンダがバインドされているとき: true
  • そうでないとき: false

解説

この関数は、指定されたレスポンダがこのソフトキーコントロールにバインドされているかどうか判定します。

参照

SFZSoftKeyControl::Bind | SFZSoftKeyControl::UnBind


SFZSoftKeyControl::ContainsTextKey
指定されたテキストキーがこのソフトキーコントロールに登録されているかどうか判定します。
[ public, const ]
Bool ContainsTextKey(
    UInt32 key   // テキストキー(固有のキー)
);

戻り値

  • テキストキーが登録されているとき: true
  • そうでないとき: false

解説

この関数は、指定されたテキストキーがこのソフトキーコントロールに登録されているかどうか判定します。

参照

SFZSoftKeyControl::SetTextKey


SFZSoftKeyControl::CreateMenu
ソフトキーメニューを作成します。
[ public ]
SFCError CreateMenu(
    UInt32 key   // メニューキー(固有のキー)
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定したとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、メニューキーに対応するソフトキーメニューを作成します。

key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定すると、 SFERR_INVALID_PARAM が返ります。

ソフトキーメニューを作成した直後は、すべてのラベルは有効状態に初期設定されます[有効フラグがセットされるため、ラベルは表示されます]。 また、テキスト、画像、3 色の要素キーはすべて "0" に初期設定されます。

[Note] 注意

SFZSoftKeyControl::~SFZSoftKeyControl デストラクタが呼び出されるまでソフトキーメニューはヒープ上に残ります。

指定されたメニューキーに対応するソフトキーメニューが存在していた場合は、既存のソフトキーメニューは破棄され、 新しく作成されたソフトキーメニューがそれに置き換わります。

この場合、 既存ソフトキーメニューの破棄直前、内部で key 引数の値を指定して SFZSoftKeyControl::HandleSoftMenuDestroy 関数を呼び出します。

[Note] 注意

この関数は、ソフトキーメニュー作成直後、内部で key 引数の値を指定して SFZSoftKeyControl::HandleSoftMenuCreate 関数を呼び出します。

[Note] メニューキー "0"

メニューキー "0" のソフトキーメニューは、 ソフトキーコントロールのインスタンス生成時に自動的に作成されます。

メニューキー "0" のソフトキーメニューは、 デフォルトメニューとして使用されます。

[Note] デフォルトメニュー

デフォルトメニューとは、 ソフトキーコントロールが『アクティブ』でない、 つまり、『アクティブレスポンダ』が存在しない場合に表示されるデフォルトのソフトキーメニューのことです。

デフォルトメニューは、 ソフトキーコントロールのインスタンス生成時に自動的に作成され、メニューキー "0" で登録されています。

デフォルトメニューの初期値は、以下の通りです。

  1. 前景色: SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00)[白色]
  2. 背景色: SFXRGBColor(0x77, 0x77, 0x77, 0x00)[灰色]
  3. フレーム色: SFXRGBColor(0xDD, 0xDD, 0xDD, 0xDD)[薄灰色]
  4. ラベルのテキスト: SFXWideString::EmptyInstance()
  5. ラベルの画像: SFBImageSmp::EmptyInstance()

※1. 上記の初期値は、 SFZSoftKeyControl::SetTextKey / SFZSoftKeyControl::SetImageKey / SFZSoftKeyControl::SetColorKey 関数を使用して、 メニューキー "0" の各ラベルに関する『テキスト、画像、3 色』の要素のキーを設定することにより変更できます。

※2. ラベルの有効状態は、デフォルト設定では有効("true")であるため、そのままではラベル領域は表示されます。 ラベル領域を非表示にするには、 SFZSoftKeyControl::SetEnable 関数を使用して有効状態を無効("false")に設定する必要があります。

[Note] アクティブレスポンダ

『アクティブレスポンダ』とは、 ソフトキーメニューにバインドされた、 フォーカス状態にあるレスポンダの中で、 最前面に配置されているレスポンダのことです。

ソフトキーメニューにバインドされたフォーカス状態にあるレスポンダが 1 つ以上存在する場合、 つまり、『アクティブレスポンダ』が存在する場合、ソフトキーコントロールは『アクティブ』であると呼びます。

[Note] アクティブメニュー

『アクティブメニュー』とは、 『アクティブレスポンダ』にバインドされたソフトキーメニューのことです。

参照

SFZSoftKeyControl::HandleSoftMenuCreate | SFZSoftKeyControl::HandleSoftMenuDestroy | SFZSoftKeyControl::DestroyMenu | SFXWideString::EmptyInstance | SFXBrewPointer::EmptyInstance | SFZSoftKeyControl::SetColorKey | SFZSoftKeyControl::SetTextKey | SFZSoftKeyControl::SetImageKey | SFZSoftKeyControl::KeyEnum | SFZSoftKeyControl::~SFZSoftKeyControl | SFXWideString | SFBImage


SFZSoftKeyControl::DestroyMenu
ソフトキーメニューを破棄します。
[ public ]
Void DestroyMenu(
    UInt32 key   // メニューキー(固有のキー)
);

解説

この関数は、メニューキーに対応するソフトキーメニューを破棄します。

[Note] 注意

破棄される直前、ハンドラ(SFZSoftKeyControl::HandleSoftMenuDestroy)が呼び出されます。

ソフトキーメニューが存在しなかった場合は何もしません。

参照

SFZSoftKeyControl::HandleSoftMenuDestroy | SFZSoftKeyControl::CreateMenu


SFZSoftKeyControl::DrawImage
ラベルの画像を描画します。
[ protected, const ]
Void DrawImage(
    SFXGraphicsPtr graphics          // グラフィックスオブジェクト
    SFXRectangleConstRef rectangle   // 描画する領域
    SFBImageSmpConstRef image        // 描画する画像
);

解説

この関数は、指定されたラベル画像を指定された矩形領域に描画します。

このとき、領域の中心は画像の中心と一致します。

独自の描画処理を行うには、この関数をオーバーライドします。

[Tip] 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 //

参照

SFZSoftKeyControl::DrawRectangularFrame | SFZSoftKeyControl::HandleBoundRequest


SFZSoftKeyControl::DrawRectangularFrame
ラベルの矩形状フレームを描画します。
[ protected, const ]
SFXRectangle DrawRectangularFrame(
    SFXGraphicsPtr graphics          // グラフィックスオブジェクト
    SFXRectangleConstRef rectangle   // 描画する領域
    SFXRGBColorConstRef back         // 描画する背景色
    SFXRGBColorConstRef frame        // 描画するフレーム色
);

戻り値

フレーム内部のコンテンツ領域。

解説

この関数は、指定されたラベルの矩形領域に関して、 フレームとフレームが囲むコンテンツ領域をそれぞれ指定された色で塗り潰します。 また、フレームが囲むコンテンツ領域を返します。

戻り値のコンテンツ領域には、テキストや画像を描画します。

独自の描画処理を行うには、この関数をオーバーライドします。

[Tip] 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 //

参照

SFZSoftKeyControl::DrawImage | SFZSoftKeyControl::HandleRenderRequest


SFZSoftKeyControl::GetActiveMenuKey
アクティブメニューのメニューキーを取得します。
[ public, const ]
UInt32 GetActiveMenuKey(Void);

解説

この関数は、アクティブメニューのメニューキーを取得します。

[Note] アクティブメニューとは

現在画面最下部に表示されているソフトキーメニューをアクティブメニューと呼びます。

参照

SFZSoftKeyControl::GetMenuKey


SFZSoftKeyControl::GetArrowBaseLength
拡張スタイルのソフトキーメニューに表示される矢印の底辺の長さを取得します。[単位:ピクセル]
[ public, const ]
SInt16 GetArrowBaseLength(Void);

戻り値

矢印の底辺の長さ。[単位:ピクセル]

解説

この関数は、拡張スタイルのソフトキーメニューに表示される矢印ラベルの底辺の長さを取得します。[単位:ピクセル]

参照

SFZSoftKeyControl::SetArrowBaseLength


SFZSoftKeyControl::GetArrowHeight
拡張スタイルのソフトキーメニューに表示される矢印ラベルの高さを取得します。[単位:ピクセル]
[ public, const ]
SInt16 GetArrowHeight(Void);

戻り値

矢印の高さ。[単位:ピクセル]

解説

この関数は、拡張スタイルのソフトキーメニューに表示される矢印ラベルの高さを取得します。[単位:ピクセル]

参照

SFZSoftKeyControl::SetArrowHeight


SFZSoftKeyControl::GetBackColor
指定された色キーに設定されたラベルの背景色を取得します。
[ public, const ]
SFXRGBColorConstRef GetBackColor(
    UInt32 key   // 色キー(固有のキー)
);

戻り値

  • 指定された色キーに設定された背景色
  • 該当する色キーが登録されていない場合、デフォルト背景色

解説

この関数は、指定された色キーに設定されたラベルの背景色(または矢印の色)を取得します。

色キーが登録されていない場合、 SFZSoftKeyControl::SetDefaultBackColor 関数で設定する、 ラベルのデフォルト背景色を返します。

参照

SFZSoftKeyControl::RegisterBackColor | SFZSoftKeyControl::UnregisterColor | SFZSoftKeyControl::SetDefaultBackColor | SFZSoftKeyControl::GetFrameColor | SFZSoftKeyControl::GetForeColor | SFZSoftKeyControl::GetText | SFZSoftKeyControl::GetImage


SFZSoftKeyControl::GetBaseSpace
ソフトキーコントロールの境界線とラベル間のスペース値を取得します。[単位:ピクセル]
[ public, const ]
SInt16 GetBaseSpace(Void);

戻り値

基準のスペース値。[単位:ピクセル]

解説

この関数は、ソフトキーコントロールの境界線とラベル間のスペース値を取得します。[単位:ピクセル]

[Note] 注意

ラベル同士の間隔もこの値になります。

参照

SFZSoftKeyControl::SetBaseSpace


SFZSoftKeyControl::GetCacheBackColor
アクティブラベルの背景色を取得します。
[ protected, const ]
SFXRGBColorConstRef GetCacheBackColor(
    SoftkeyEnum index   // ラベル番号
);

引数

index

SFZSoftKeyControl::SoftkeyEnum 定数を指定します。

戻り値

ラベルの背景色。

解説

この関数は、キャッシュからラベル番号を指定してアクティブラベルの背景色を取得します。

[Note] アクティブラベルとは

アクティブメニューのラベルをアクティブラベルと呼びます。

[Note] アクティブメニューとは

現在画面最下部に表示されているソフトキーメニューをアクティブメニューと呼びます。

[Note] ソフトキーコントロールのキャッシュ

ソフトキーコントロールでは、 アクティブメニューの内容はキャッシュに保存されます。

参照

SFZSoftKeyControl::SoftkeyEnum | SFZSoftKeyControl::GetCacheFrameColor | SFZSoftKeyControl::GetCacheForeColor


SFZSoftKeyControl::GetCacheForeColor
指定されたラベル番号のアクティブラベルの前景色を取得します。
[ protected, const ]
SFXRGBColorConstRef GetCacheForeColor(
    SoftkeyEnum index   // ラベル番号
);

引数

index

SFZSoftKeyControl::SoftkeyEnum 定数を指定します。

戻り値

指定されたラベル番号のアクティブラベルの前景色。

解説

この関数は、指定されたラベル番号のアクティブラベルの前景色をキャッシュから取得します。

[Note] アクティブラベルとは

アクティブメニューのラベルをアクティブラベルと呼びます。

[Note] アクティブメニューとは

現在画面最下部に表示されているソフトキーメニューをアクティブメニューと呼びます。

[Note] ソフトキーコントロールのキャッシュ

ソフトキーコントロールでは、 アクティブメニューの内容はキャッシュに保存されます。

参照

SFZSoftKeyControl::SoftkeyEnum | SFZSoftKeyControl::GetCacheFrameColor | SFZSoftKeyControl::GetCacheBackColor


SFZSoftKeyControl::GetCacheFrameColor
指定されたラベル番号のアクティブラベルのフレーム色を取得します。
[ protected, const ]
SFXRGBColorConstRef GetCacheFrameColor(
    SoftkeyEnum index   // ラベル番号
);

引数

index

SFZSoftKeyControl::SoftkeyEnum 定数を指定します。

戻り値

指定されたラベル番号のアクティブラベルのフレーム色。

解説

この関数は、指定されたラベル番号のアクティブラベルのフレーム色をキャッシュから取得します。

[Note] アクティブラベルとは

アクティブメニューのラベルをアクティブラベルと呼びます。

[Note] アクティブメニューとは

現在画面最下部に表示されているソフトキーメニューをアクティブメニューと呼びます。

[Note] ソフトキーコントロールのキャッシュ

ソフトキーコントロールでは、 アクティブメニューの内容はキャッシュに保存されます。

参照

SFZSoftKeyControl::SoftkeyEnum | SFZSoftKeyControl::GetCacheForeColor | SFZSoftKeyControl::GetCacheBackColor


SFZSoftKeyControl::GetCacheImage
指定されたラベル番号のアクティブラベルの画像を取得します。
[ protected, const ]
SFBImageSmpConstRef GetCacheImage(
    SoftkeyEnum index   // ラベル番号(上下左右キーラベルを含まない)
);

引数

index

SFZSoftKeyControl::SoftkeyEnum 定数で定義される、 SELECT, SOFTKEY_1, SOFTKEY_2, SOFTKEY_3, SOFTKEY_4 の何れかの値を指定します。

戻り値

指定されたラベル番号のアクティブラベルの画像。

解説

この関数は、指定されたラベル番号のアクティブラベルの画像をキャッシュから取得します。

上下左右キーのラベル番号を指定された場合、null を返します。

[Note] アクティブラベルとは

アクティブメニューのラベルをアクティブラベルと呼びます。

[Note] アクティブメニューとは

現在画面最下部に表示されているソフトキーメニューをアクティブメニューと呼びます。

[Note] ソフトキーコントロールのキャッシュ

ソフトキーコントロールでは、 アクティブメニューの内容はキャッシュに保存されます。

参照

SFZSoftKeyControl::SoftkeyEnum | SFZSoftKeyControl::GetCacheText


SFZSoftKeyControl::GetCacheLabelEnable
指定されたラベル番号のアクティブラベルの有効状態を取得します。
[ protected, const ]
Bool GetCacheLabelEnable(
    SoftkeyEnum index   // ラベル番号
);

引数

index

SFZSoftKeyControl::SoftkeyEnum 定数を指定します。

戻り値

ラベルの有効状態

解説

この関数は、指定されたラベル番号のアクティブラベルの有効状態をキャッシュから取得します。

有効状態が false のラベルは描画の対象になりません。

[Note] アクティブラベルとは

アクティブメニューのラベルをアクティブラベルと呼びます。

[Note] アクティブメニューとは

現在画面最下部に表示されているソフトキーメニューをアクティブメニューと呼びます。

[Note] ソフトキーコントロールのキャッシュ

ソフトキーコントロールでは、 アクティブメニューの内容はキャッシュに保存されます。

参照

SFZSoftKeyControl::SoftkeyEnum | SFZSoftKeyControl::GetEnable


SFZSoftKeyControl::GetCachePress
指定されたラベル番号のアクティブラベルの押下状態をキャッシュから取得します。
[ protected, const ]
Bool GetCachePress(
    SoftkeyEnum index   // ラベル番号 (上下左右キーラベルのみ)
);

引数

index

SFZSoftKeyControl::SoftkeyEnum 定数で定義される、 UP, DOWN, LEFT, RIGHT の何れかの値を指定します。

戻り値

指定されたラベル番号のアクティブラベル(上下左右キーラベル)の押下状態。

解説

この関数は、指定されたラベル番号のアクティブラベルの押下状態をキャッシュから取得します。

上下左右キーラベル以外のラベル番号を指定された場合、false を返します。

[Note] アクティブラベルとは

アクティブメニューのラベルをアクティブラベルと呼びます。

[Note] アクティブメニューとは

現在画面最下部に表示されているソフトキーメニューをアクティブメニューと呼びます。

[Note] ソフトキーコントロールのキャッシュ

ソフトキーコントロールでは、 アクティブメニューの内容はキャッシュに保存されます。

参照

SFZSoftKeyControl::SoftkeyEnum


SFZSoftKeyControl::GetCacheText
指定されたラベル番号のアクティブラベルのテキストをキャッシュから取得します。
[ protected, const ]
SFXWideStringConstRef GetCacheText(
    SoftkeyEnum index   // ラベル番号(上下左右キーラベルを含まない)
);

引数

index

SFZSoftKeyControl::SoftkeyEnum 定数で定義される、 SELECT, SOFTKEY_1, SOFTKEY_2, SOFTKEY_3, SOFTKEY_4 の何れかの値を指定します。

戻り値

指定されたラベル番号のアクティブラベルのテキスト。

解説

この関数は、指定されたラベル番号のアクティブラベルのテキストをキャッシュから取得します。

上下左右キーのラベル番号を指定された場合、null を返します。

[Note] アクティブラベルとは

アクティブメニューのラベルをアクティブラベルと呼びます。

[Note] アクティブメニューとは

現在画面最下部に表示されているソフトキーメニューをアクティブメニューと呼びます。

[Note] ソフトキーコントロールのキャッシュ

ソフトキーコントロールでは、 アクティブメニューの内容はキャッシュに保存されます。

参照

SFZSoftKeyControl::SoftkeyEnum | SFZSoftKeyControl::GetCacheImage


SFZSoftKeyControl::GetColorKey
指定されたソフトキーメニューのラベルに設定された色キーを取得します。
[ public, const ]
UInt32 GetColorKey(
    UInt32 menuKey      // メニューキー(固有のキー)
    SoftkeyEnum index   // ラベル番号
);

戻り値

  • 成功したとき: 色のキー
  • menuKey 引数に指定したキーが登録されていない、または index 引数にしていしたラベル番号が正しくないとき: INVALID_KEY

解説

この関数は、指定されたソフトキーメニューのラベルに設定された色キーを取得します。

menuKey 引数に指定したメニューキーが登録されていない、または index 引数にしていしたラベル番号が正しくないときは、 INVALID_KEY(=UINT32_MAXIMUM)を返します。

参照

SFZSoftKeyControl::SetColorKey


SFZSoftKeyControl::GetDefaultBackColor
ラベルのデフォルト背景色を取得します。
[ public, const ]
SFXRGBColorConstRef GetDefaultBackColor(Void);

解説

この関数は、色キーが不正な場合に使用される、 ラベルのデフォルト背景色を取得します。

参照

SFZSoftKeyControl::SetDefaultBackColor | SFXRGBColor


SFZSoftKeyControl::GetDefaultForeColor
ラベルのデフォルト前景色を取得します。
[ public, const ]
SFXRGBColorConstRef GetDefaultForeColor(Void);

解説

この関数は、色キーが不正な場合に使用される、 ラベルのデフォルト前景色を取得します。

参照

SFZSoftKeyControl::SetDefaultForeColor | SFXRGBColor


SFZSoftKeyControl::GetDefaultFrameColor
ラベルのデフォルトフレーム色を取得します。
[ public, const ]
SFXRGBColorConstRef GetDefaultFrameColor(Void);

解説

この関数は、色キーが不正な場合に使用されるラベルのデフォルトフレーム色を取得します。

参照

SFZSoftKeyControl::SetDefaultFrameColor | SFXRGBColor


SFZSoftKeyControl::GetEnable
指定されたメニューキーとラベル番号に対応するラベルの有効状態を取得します。
[ public, const ]
Bool GetEnable(
    UInt32 menuKey      // メニューキー(固有のキー)
    SoftkeyEnum index   // ラベル番号
);

戻り値

  • ラベルが有効であるとき: true
  • そうでないとき: false

解説

この関数は、指定されたメニューキーとラベル番号に対応するラベルの有効状態を取得します。

不正なメニューキーやラベル番号を指定された場合は false を返します。

[Note] 注意

有効状態が false であるラベルは描画されません。

参照

SFZSoftKeyControl::SetEnable


SFZSoftKeyControl::GetFont
ラベルのテキストを描画するフォントを取得します。
[ public, const ]
AEEFont GetFont(Void);

戻り値

ラベルのテキストを描画するフォント。

解説

この関数は、ラベルのテキストを描画するフォントを取得します。

参照

SFZSoftKeyControl::SetFont | BREW API AEEFont


SFZSoftKeyControl::GetForeColor
指定された色キーに設定されたラベルの前景色を取得します。
[ public, const ]
SFXRGBColorConstRef GetForeColor(
    UInt32 key   // 色キー(固有のキー)
);

戻り値

  • 指定された色キーに設定された前景色
  • 該当する色キーが存在しない場合、デフォルト前景色

解説

この関数は、指定された色キーに設定されたラベルの前景色(テキストを描画する色)を取得します。

色キーが登録されていない場合は、 SFZSoftKeyControl::SetDefaultForeColor 関数を使用して設定する、 ラベルのデフォルト前景色を返します。

参照

SFZSoftKeyControl::RegisterForeColor | SFZSoftKeyControl::UnregisterColor | SFZSoftKeyControl::SetDefaultForeColor | SFZSoftKeyControl::GetFrameColor | SFZSoftKeyControl::GetBackColor | SFZSoftKeyControl::GetText | SFZSoftKeyControl::GetImage


SFZSoftKeyControl::GetFrameColor
指定された色キーに設定されたラベルのフレーム色を取得します。
[ public, const ]
SFXRGBColorConstRef GetFrameColor(
    UInt32 key   // 色キー(固有のキー)
);

戻り値

  • 指定された色キーに設定されたフレーム色
  • 該当する色キーが存在しない場合、デフォルトフレーム色

解説

この関数は、指定された色キーに設定されたラベルのフレーム色を取得します。

色キーが登録されていない場合は、 SFZSoftKeyControl::SetDefaultFrameColor 関数を使用して設定する、 ラベルのデフォルトフレーム色を返します。

参照

SFZSoftKeyControl::RegisterFrameColor | SFZSoftKeyControl::UnregisterColor | SFZSoftKeyControl::SetDefaultFrameColor | SFZSoftKeyControl::GetForeColor | SFZSoftKeyControl::GetBackColor | SFZSoftKeyControl::GetText | SFZSoftKeyControl::GetImage


SFZSoftKeyControl::GetImage
指定された画像キーに対応するラベルの画像を取得します。
[ public, const ]
SFBImageSmpConstRef GetImage(
    UInt32 key   // 画像キー(固有のキー)
);

戻り値

指定された画像キーに対応するラベルの画像。

解説

この関数は、指定された画像キーに対応するラベルの画像を取得します。

画像キーが登録されていない場合は、 SFBImageSmp::EmptyInstance() を返します。

参照

SFZSoftKeyControl::RegisterImage | SFZSoftKeyControl::UnregisterImage | SFZSoftKeyControl::GetText | SFZSoftKeyControl::GetBackColor | SFZSoftKeyControl::GetForeColor | SFZSoftKeyControl::GetFrameColor | SFXBrewPointer::EmptyInstance | SFBImage


SFZSoftKeyControl::GetImageKey
指定されたソフトキーメニューのラベルに設定された画像キーを取得します。
[ public, const ]
UInt32 GetImageKey(
    UInt32 menuKey      // メニューキー(固有のキー)
    SoftkeyEnum index   // ラベル番号
);

戻り値

  • 成功したとき: 画像キー
  • 引数が不正なとき: INVALID_KEY

解説

この関数は、指定されたソフトキーメニューのラベルに設定された画像キーを取得します。

menuKey 引数に指定したメニューキーが登録されていない、または index 引数にしていしたラベル番号が正しくないときは、 INVALID_KEY(=UINT32_MAXIMUM)を返します。

参照

SFZSoftKeyControl::SetImageKey


SFZSoftKeyControl::GetLabelRectangle
指定されたラベルの矩形領域を取得します。
[ public, const ]
SFXRectangleConstRef GetLabelRectangle(
    SoftkeyEnumEnum index   // ラベル番号
);

戻り値

指定されたラベルの矩形領域。

解説

この関数は、指定されたラベルの矩形領域を取得します。

[Note] 注意

この関数は、 独自の描画処理を行う場合など、ラベルの領域を取得する必要があるときに使用します。

参照

SFZSoftKeyControl::SoftkeyEnum | SFZSoftKeyControl::SetLabelRectangle | SFZSoftKeyControl::DrawRectangularFrame


SFZSoftKeyControl::GetMenuKey
指定されたレスポンダに関連付けされているメニューキーを取得します。
[ public, const ]
UInt32 GetMenuKey(
    SFYResponderPtr responder   // レスポンダ
);

戻り値

指定されたレスポンダに関連付けされているメニューキー。

解説

この関数は、指定されたレスポンダに関連付けされているメニューキーを取得します。

指定されたレスポンダにソフトキーメニューが関連付けられていない場合、 INVALID_KEY (= UINT32_MAXIMUM) を返します。

参照

SFZSoftKeyControl::CreateMenu | SFZSoftKeyControl::DestroyMenu


SFZSoftKeyControl::GetStyle
メニューのスタイルを取得します。
[ public, const ]
StyleEnum GetStyle(Void);

戻り値

メニューのスタイル。

解説

この関数は、メニューのスタイルを取得します。

参照

SFZSoftKeyControl::SetStyle | SFZSoftKeyControl::StyleEnum


SFZSoftKeyControl::GetText
指定されたテキストキーに対応するラベルのテキストを取得します。
[ public, const ]
SFXWideStringConstRef GetText(
    UInt32 key   // テキストキー(固有のキー)
);

戻り値

指定されたテキストキーに対応するラベルのテキスト。

解説

この関数は、指定されたテキストキーに対応するラベルのテキストを取得します。

指定されたテキストキーが登録されていない場合は、 SFXWideString::EmptyInstance() を返します。

参照

SFZSoftKeyControl::RegisterText | SFZSoftKeyControl::UnregisterText | SFZSoftKeyControl::GetImage | SFZSoftKeyControl::GetBackColor | SFZSoftKeyControl::GetForeColor | SFZSoftKeyControl::GetFrameColor | SFXWideString::EmptyInstance | SFXWideString


SFZSoftKeyControl::GetTextKey
指定されたソフトキーメニューのラベルに設定されたテキストキーを取得します。
[ public, const ]
UInt32 GetTextKey(
    UInt32 menuKey      // メニューキー(固有のキー)
    SoftkeyEnum index   // ラベル番号
);

戻り値

指定されたソフトキーメニューのラベルに設定されたテキストキー。

解説

この関数は、指定されたソフトキーメニューのラベルに設定されたテキストキーを取得します。

menuKey 引数に指定したメニューキーが登録されていない、または index 引数にしていしたラベル番号が正しくないときは、 INVALID_KEY(=UINT32_MAXIMUM)を返します。

参照

SFZSoftKeyControl::SetTextKey


SFZSoftKeyControl::HandleBoundOptimize
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE) イベントを受信したときに呼び出される関数です(最適な領域のサイズと始点を計算します)。
[ protected, virtual, const ]
Void HandleBoundOptimize(
    SFXRectanglePtr rectangle   // 矩形
);

解説

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

このレスポンダに最適なサイズと始点を計算します。

デフォルトの実装は、携帯電話画面の中でスタイルに応じたソフトキーコントロールの最適な領域と始点を計算します。

[Caution] 注意事項

この関数の実装は、SFZSoftKeyControl::HandleBoundRequest 関数と同一です。 引数の rectangle に矩形領域が設定されても無視され、携帯電話の画面全体から最適な領域が計算されます。

通常の HandleBoundOptimize 関数では計算結果に最適なサイズだけが返りますが、 SFZSoftKeyControl::HandleBoundOptimize 関数では、 領域イベントの P32 パラメータとして渡された rectangle 引数の origin 要素(始点)に最適な位置も計算されて返ります。 そのため、SFZSoftKeyControl クラスでは SFYResponder::GetSuitableBound 関数を呼び出してから実領域の始点を設定する必要はありません。 なお、SFYResponder::GetSuitableBound 関数を呼び出すときに引数に矩形領域を指定しても無視されます。

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

SFYResponder::GetSuitableBound 関数は、 引数にヒント領域を指定された場合は 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE, rectangle)] をレスポンダに送信します。

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

※ 領域イベントの P32 パラメータ rectangle にはヒント領域が初期設定されています。

[Note] (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]


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

解説

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

実領域の変更時に追加の処理を行いたい場合は、 この関数をオーバーライドします。

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

デフォルトの実装では、ラベルの位置とサイズを再計算します。 また仮想領域を実領域に一致させます。 そして再描画領域に登録します。

[Note] (SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL) イベントの送信

(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL) イベントは SFYResponder::SetRealBound 関数の呼び出しによって実領域が変化したときに発生します。

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

この仮想関数をオーバーライドする以外に、 領域イベント専用ハンドラ[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 //

参照

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


SFZSoftKeyControl::HandleBoundRequest
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST) イベントを受信したときに呼び出される関数です。[最適な領域のサイズと始点を計算します]
[ protected, virtual, const ]
Void HandleBoundRequest(
    SFXRectanglePtr rectangle   // 計算された矩形
);

解説

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

このレスポンダに最適なサイズと始点を計算します。

デフォルトの実装は、携帯電話画面の中でスタイルに応じたソフトキーコントロールの最適な領域と始点を計算します。

[Caution] 注意事項

この関数の実装は、SFZSoftKeyControl::HandleBoundOptimize 関数と同一です。 引数の rectangle に矩形領域が設定されても無視され、携帯電話の画面全体から最適な領域が計算されます。

通常の HandleBoundRequest 関数では計算結果に最適なサイズだけが返りますが、 SFZSoftKeyControl::HandleBoundRequest 関数では、 領域イベントの P32 パラメータとして渡された rectangle 引数の origin 要素(始点)に最適な位置も計算されて返ります。 そのため、SFZSoftKeyControl クラスでは SFYResponder::GetSuitableBound 関数を呼び出してから実領域の始点を設定する必要はありません。

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

SFYResponder::GetSuitableBound 関数は、 引数に何も指定しない場合は 領域イベント [SFXEvent(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST, rectangle)] をレスポンダに送信します。

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

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

[Tip] Tip
実領域のデフォルト値は SFXRectangle(0, 0, 0, 0) です。

[Note] (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]


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

解説

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

仮想領域の変更時に追加の処理を行いたい場合は、この関数をオーバーライドします。

デフォルトの実装は、仮想領域を実領域のサイズに合わせます。

[Note] 領域イベント[(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 には変更後の仮想領域が設定されています。

[Note] 仮想領域の変更処理

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

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

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

内部実装

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

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

参照

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


SFZSoftKeyControl::HandleRenderRequest
描画イベントを受信したときに呼び出される関数です(レスポンダを描画します)。
[ protected, virtual, const ]
Void HandleRenderRequest(
    SFXGraphicsPtr graphics   // グラフィックスオブジェクト
);

解説

この関数は、 描画イベント [SFXEvent(SFEVT_RESPONDER_RENDER, SFP16_RENDER_REQUEST, graphics)] を受信したときに呼び出されます。

独自の描画処理を行いたい場合は、この関数をオーバーライドします。

デフォルトの実装は、ソフトキーコントロールを描画します。

[Note] レスポンダの描画手順

  1. SFYResponder::Invalidate 関数を使用して再描画領域を登録します。
  2. イベントループの最後、 アプリ開始/レジュームまたは優先的イベントハンドラ終了のタイミング、 あるいは、コールバックなどのイベントループの外で、 自動的に、あるいは、明示的に SFYResponder::Render 関数を呼び出します。
  3. 描画エンジンが起動されます。
  4. 再描画が必要なレスポンダだけが描画イベントを受信します。
  5. SFYWidget クラスを継承するレスポンダが描画イベントを受信すると、 SFYWidget::SFYWidget コンストラクタで最初に登録した描画ハンドラの処理により、 SFYWidget::HandleRenderRequest 仮想関数が呼び出されます。 その後、描画ハンドラが登録した順に呼び出されます。
  6. 実際にレスポンダが描画されます。

[Tip] Tip
描画ハンドラの宣言と登録の手間を省けるので、 通常は SFYWidget::HandleRenderRequest 仮想関数だけを利用してレスポンダを描画します。

内部実装

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

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] | 描画処理


SFZSoftKeyControl::HandleSoftMenuCreate
ソフトキーメニューが作成された直後に呼び出される関数です。
[ protected, virtual ]
SFCError HandleSoftMenuCreate(
    UInt32 key   // 作成されたメニューキー
);

解説

この関数は、ソフトキーメニューが作成された直後に呼び出されます。

ソフトキーメニューが作成された直後に追加の処理を行いたい場合は、この関数をオーバーライドします。

デフォルトの実装は、SFERR_NO_ERROR を返します。

内部実装

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

/*protected virtual */SFCError SFZSoftKeyControl::HandleSoftMenuCreate(UInt32 key)
{
    unused(key);
    return SFERR_NO_ERROR;
}// SFZSoftKeyControl::HandleSoftMenuCreate //

参照

SFZSoftKeyControl::CreateMenu | SFZSoftKeyControl::HandleSoftMenuDestroy


SFZSoftKeyControl::HandleSoftMenuDestroy
ソフトキーメニューが破棄される直前に呼び出される関数です。
[ protected, virtual ]
Void HandleSoftMenuDestroy(
    UInt32 key   // 破棄されるメニューキー
);

解説

この関数は、ソフトキーメニューが破棄される直前に呼び出されます。

ソフトキーメニューが破棄される直前に追加の処理を行いたい場合は、この関数をオーバーライドします。

デフォルトの実装は、何も行いません。

内部実装

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

/*protected virtual */Void SFZSoftKeyControl::HandleSoftMenuDestroy(UInt32 key)
{
    unused(key);
    return;
}// SFZSoftKeyControl::HandleSoftMenuDestroy //

参照

SFZSoftKeyControl::DestroyMenu | SFZSoftKeyControl::HandleSoftMenuCreate


SFZSoftKeyControl::HandleStyle
スタイルイベントを受信したときに呼び出される関数です。
[ protected, virtual ]
Void HandleStyle(
    UInt16 style   // スタイルイベントの P16 パラメータ
);

解説

この関数は、 スタイルイベント [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]


SFZSoftKeyControl::InvalidateCache
キャッシュを一時的に無効にします。
[ protected, const ]
Void InvalidateCache(Void);

解説

この関数は、アクティブメニューの内容が保存されたキャッシュを一時的に無効にします。

[Note] 注意

HandleRenderRequest 関数を独自にオーバーライドする場合、 SFZSoftKeyControl::IsCacheValid 関数を呼び出してキャッシュが有効かどうかを判定します。 キャッシュが無効である場合は、 SFZSoftKeyControl::RebuildCache 関数を呼び出してキャッシュを再構築する必要があります。

参照

SFZSoftKeyControl::IsCacheValid | SFZSoftKeyControl::RebuildCache


SFZSoftKeyControl::IsCacheValid
キャッシュが有効かどうかを判定します。
[ protected, const ]
Bool IsCacheValid(Void);

戻り値

  • キャッシュが無効なとき: false
  • そうでないとき: true

解説

この関数は、 アクティブメニューの内容が保存されたキャッシュが有効かどうかを判定します。

[Note] 注意

HandleRenderRequest 関数を独自にオーバーライドする場合、 この関数を呼び出してキャッシュが有効かどうかを判定します。 キャッシュが無効である場合は、 SFZSoftKeyControl::RebuildCache 関数を呼び出してキャッシュを再構築する必要があります。

使用例

Void CustomSoftKeyControl::HandleRenderRequest(SFXGraphicsPtr graphics) const
{
    SFCError error(SFERR_NO_ERROR);

    // キャッシュが無効ならば、
    if (!IsCacheValid()) {

        // キャッシュを再構築する
        error = RebuildCache();
    }
    if (error == SFERR_NO_ERROR) {
        // 独自の描画処理
        // ...
    }
}

参照

SFZSoftKeyControl::InvalidateCache | SFZSoftKeyControl::RebuildCache


SFZSoftKeyControl::NewInstance
新しいインスタンスを作成します。
[ public, static ]
SFZSoftKeyControlSmp NewInstance(
    SFCErrorPtr exception = null   // エラー値
);

引数

exception

関数内部で発生したエラー値を返します。

戻り値

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

解説

この関数は、SFZSoftKeyControl クラスの新しいインスタンスを作成します。

インスタンスの作成に成功した場合は null 以外のポインタを返します。 失敗した場合は、null ポインタを返します。

exception 引数を指定した場合、 この引数にはエラー値が返ります。

使用例

以下は、ソフトキーコントロールのインスタンスを生成するためのコードです。

// ソフトキーコントロールのインスタンスを生成する
SFZSoftKeyControlSmp _softkey;
SFCError error;

if ((_softkey = SFZSoftKeyControl::NewInstance(&error)) != null) {
    // ...
}

SFZSoftKeyControl::RebuildCache
キャッシュを再構築します。
[ protected, const ]
SFCError RebuildCache(Void);

解説

この関数は、アクティブメニューの内容を保存するキャッシュを再構築します。

[Note] 注意

HandleRenderRequest 関数を独自にオーバーライドする場合、 SFZSoftKeyControl::IsCacheValid 関数を呼び出してキャッシュが有効かどうかを判定します。 キャッシュが無効である場合は、この関数を呼び出してキャッシュを再構築する必要があります。

使用例

Void CustomSoftKeyControl::HandleRenderRequest(SFXGraphicsPtr graphics) const
{
    SFCError error(SFERR_NO_ERROR);

    // キャッシュが無効ならば、
    if (!IsCacheValid()) {

        // キャッシュを再構築する
        error = RebuildCache();
    }
    if (error == SFERR_NO_ERROR) {
        // 独自の描画処理
        // ...
    }
}

参照

SFZSoftKeyControl::InvalidateCache | SFZSoftKeyControl::IsCacheValid


SFZSoftKeyControl::RegisterBackColor
ラベルまたは矢印(三角形)の背景色を登録します。
[ public ]
SFCError RegisterBackColor(
    UInt32 key                  // 色キー(固有のキー)
    SFXRGBColorConstRef param   // 設定する色
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定したとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、ラベルまたは矢印(三角形)の背景色を登録します。

key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定すると、 SFERR_INVALID_PARAM が返ります。

[Note] 注意

矢印(三角形)の背景色は、上下左右キー非押下時の色です。

[Note] 注意

一度登録すると SFZSoftKeyControl::UnregisterColor 関数を呼び出すか、 SFZSoftKeyControl::~SFZSoftKeyControl デストラクタが呼び出されるまで色のインスタンスはヒープ上に残ります。

キーが既に存在する場合は、背景色を上書きし、 キャッシュを一時的に無効化し、 ソフトキーコントロールを再描画領域に登録します。

[Note] 色キー "0" の背景色

デフォルト設定では、 色キー "0" の背景色が SFXRGBColor(0x77, 0x77, 0x77, 0x00)[灰色] として登録されてます。

SFZSoftKeyControl::SetColorKey 関数でソフトキーメニューに色キーを関連付けなかった場合、 この背景色が参照されます。

※この背景色はメニューキー "0" のデフォルトメニューから参照されます。

[Note] デフォルトメニュー

メニューキー "0" のデフォルトメニューの詳細は、SFZSoftKeyControl の解説を参照してください。

[Note] 色キーと 3 色

フレーム色、前景色、および背景色は、登録時に同じ固有の色キーによって 3 色にまとめられます。

参照

SFZSoftKeyControl::UnregisterColor | SFZSoftKeyControl::RegisterFrameColor | SFZSoftKeyControl::RegisterForeColor | SFZSoftKeyControl::RegisterText | SFZSoftKeyControl::RegisterImage | SFZSoftKeyControl::SetColorKey | SFZSoftKeyControl::~SFZSoftKeyControl | SFZSoftKeyControl::InvalidateCache


SFZSoftKeyControl::RegisterForeColor
ラベルまたは矢印(三角形)の前景色を登録します。
[ public ]
SFCError RegisterForeColor(
    UInt32 key                  // 色キー(固有のキー)
    SFXRGBColorConstRef param   // 設定する色
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定したとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、ラベルまたは矢印(三角形)の前景色を登録します。

key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定すると、 SFERR_INVALID_PARAM が返ります。

[Note] 注意

ラベルの前景色は、テキストを描画する色です。 矢印(三角形)の前景色は、上下左右キー押下時の色です。

[Note] 注意

一度登録すると SFZSoftKeyControl::UnregisterColor 関数を呼び出すか、 SFZSoftKeyControl::~SFZSoftKeyControl デストラクタが呼び出されるまで色のインスタンスはヒープ上に残ります。

キーが既に存在する場合は、前景色を上書きし、 キャッシュを一時的に無効化し、 ソフトキーコントロールを再描画領域に登録します。

[Note] 色キー "0" の前景色

デフォルト設定では、 色キー "0" の前景色が SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00)[白色] として登録されてます。

SFZSoftKeyControl::SetColorKey 関数でソフトキーメニューに色キーを関連付けなかった場合、 この前景色が参照されます。

※この前景色はメニューキー "0" のデフォルトメニューから参照されます。

[Note] デフォルトメニュー

メニューキー "0" のデフォルトメニューの詳細は、SFZSoftKeyControl の解説を参照してください。

[Note] 色キーと 3 色

フレーム色、前景色、および背景色は、登録時に同じ固有の色キーによって 3 色にまとめられます。

参照

SFZSoftKeyControl::UnregisterColor | SFZSoftKeyControl::RegisterFrameColor | SFZSoftKeyControl::RegisterBackColor | SFZSoftKeyControl::RegisterText | SFZSoftKeyControl::RegisterImage | SFZSoftKeyControl::SetColorKey | SFZSoftKeyControl::~SFZSoftKeyControl | SFZSoftKeyControl::InvalidateCache


SFZSoftKeyControl::RegisterFrameColor
ラベルのフレーム色を登録します。
[ public ]
SFCError RegisterFrameColor(
    UInt32 key                  // 色キー(固有のキー)
    SFXRGBColorConstRef param   // 設定する色
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定したとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、ラベルのフレーム色を登録します。

key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定すると、 SFERR_INVALID_PARAM が返ります。

[Note] 注意

一度登録すると SFZSoftKeyControl::UnregisterColor 関数を呼び出すか、 SFZSoftKeyControl::~SFZSoftKeyControl デストラクタが呼び出されるまで色のインスタンスはヒープ上に残ります。

キーが既に存在する場合は、フレーム色を上書きし、 キャッシュを一時的に無効化し、 ソフトキーコントロールを再描画領域に登録します。

[Note] 色キー "0" のフレーム色

デフォルト設定では、 色キー "0" のフレーム色が SFXRGBColor(0xDD, 0xDD, 0xDD, 0xDD)[薄灰色] として登録されてます。

SFZSoftKeyControl::SetColorKey 関数でソフトキーメニューに色キーを関連付けなかった場合、 このフレーム色が参照されます。

※このフレーム色はメニューキー "0" のデフォルトメニューから参照されます。

[Note] デフォルトメニュー

メニューキー "0" のデフォルトメニューの詳細は、SFZSoftKeyControl の解説を参照してください。

[Note] 色キーと 3 色

フレーム色、前景色、および背景色は、登録時に同じ固有の色キーによって 3 色にまとめられます。

参照

SFZSoftKeyControl::UnregisterColor | SFZSoftKeyControl::RegisterForeColor | SFZSoftKeyControl::RegisterBackColor | SFZSoftKeyControl::RegisterText | SFZSoftKeyControl::RegisterImage | SFZSoftKeyControl::SetColorKey | SFZSoftKeyControl::~SFZSoftKeyControl | SFZSoftKeyControl::InvalidateCache


SFZSoftKeyControl::RegisterImage
ラベルの画像を登録します。
[ public ]
SFCError RegisterImage(
    UInt32 key             // 画像キー(固有のキー)
    SFXPathConstRef path   // リソースファイルのパス
);
[ public ]
SFCError RegisterImage(
    UInt32 key             // 画像キー(固有のキー)
    SFXPathConstRef path   // リソースファイルのパス
    UInt16 id              // リソース ID
);
[ public ]
SFCError RegisterImage(
    UInt32 key                  // 画像キー(固有のキー)
    SFBImageSmpConstRef param   // 画像
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定したとき、または path 引数のリソースファイルのパスが正しくないとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY
  • 内部で BREW API IShell インターフェースのインスタンスが取得できないとき: SFERR_INVALID_STATE

解説

この関数は、ラベルの画像を登録します。

key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定すると、 SFERR_INVALID_PARAM が返ります。

画像を直接、またはリソースファイルから読み込むように設定できます。 但し、リソースファイルのパスが正しくないときは、SFERR_INVALID_PARAM が返ります。

[Note] 注意

一度登録すると SFZSoftKeyControl::UnregisterImage 関数を呼び出すか、 SFZSoftKeyControl::~SFZSoftKeyControl デストラクタが呼び出されるまで画像はヒープ上に残ります。

キーが既に存在する場合は、 そのキーにより参照されていた既存の画像を解放し、 指定された画像に置き換えます。 同時に、キャッシュを一時的に無効化し、 ソフトキーコントロールを再描画領域に登録します。

[Note] 画像キー "0" の画像

デフォルト設定では、 画像キー "0" の画像が SFBImageSmp::EmptyInstance() として登録されてます。

SFZSoftKeyControl::SetImageKey 関数でソフトキーメニューに画像キーを関連付けなかった場合、 この画像が参照されます。

※この画像はメニューキー "0" のデフォルトメニューから参照されます。

[Note] デフォルトメニュー

メニューキー "0" のデフォルトメニューの詳細は、SFZSoftKeyControl の解説を参照してください。

参照

SFZSoftKeyControl::UnregisterImage | SFZSoftKeyControl::GetImage | SFZSoftKeyControl::RegisterImageRange | SFZSoftKeyControl::RegisterText | SFZSoftKeyControl::RegisterFrameColor | SFZSoftKeyControl::RegisterForeColor | SFZSoftKeyControl::RegisterBackColor | SFZSoftKeyControl::SetImageKey | SFZSoftKeyControl::InvalidateCache | SFXBrewPointer::EmptyInstance | SFZSoftKeyControl::~SFZSoftKeyControl | SFBImage


SFZSoftKeyControl::RegisterImageRange
ラベルの画像をまとめて登録します。
[ public ]
SFCError RegisterImageRange(
    UInt32 originKey       // 起点となる画像キー
    SFXPathConstRef path   // リソースファイルのパス
    UInt16 start           // 開始のリソース ID
    UInt16 end             // 終了のリソース ID
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定したとき、 path 引数に指定したリソースファイルのパスが正しくないとき、 またはstart 引数 > end 引数であるとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY
  • 内部で BREW API IShell インターフェースのインスタンスが取得できないとき: SFERR_INVALID_STATE

解説

この関数は、ラベルの画像をまとめて登録します。

画像キーの範囲 [key, key + (end - start)] と リソース ID の範囲 [start, end] が対応します。

[Tip] Tip

管理を簡素化するために、 起点となるテキストキーの値と開始のリソース ID の値を一致させることを推奨します。

[Note] 注意

一度登録すると 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


SFZSoftKeyControl::RegisterText
ラベルのテキストを登録します。
[ public ]
SFCError RegisterText(
    UInt32 key             // テキストキー(固有のキー)
    SFXPathConstRef path   // リソースファイルのパス
    UInt16 id              // リソース ID
);
[ public ]
SFCError RegisterText(
    UInt32 key                    // テキストキー(固有のキー)
    SFXWideStringConstRef param   // テキスト
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定したとき、または path 引数のリソースファイルのパスが正しくないとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY
  • 内部で BREW API IShell インターフェースのインスタンスが取得できないとき: SFERR_INVALID_STATE

解説

この関数は、ラベルのテキストを登録します。

key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定すると、 SFERR_INVALID_PARAM が返ります。

テキストを直接、またはリソースファイルから読み込むように設定できます。 但し、リソースファイルのパスが正しくないときは、SFERR_INVALID_PARAM が返ります。

[Note] 注意

一度登録すると SFZSoftKeyControl::UnregisterText 関数を呼び出すか、 SFZSoftKeyControl::~SFZSoftKeyControl デストラクタが呼び出されるまでテキストはヒープ上に残ります。

キーが既に存在する場合は、 そのキーにより参照されていた既存のテキストを解放し、 指定されたテキストに置き換えます。 同時に、キャッシュを一時的に無効化し、 ソフトキーコントロールを再描画領域に登録します。

[Note] テキストキー "0" のテキスト

デフォルト設定では、 テキストキー "0" のテキストが SFXWideString::EmptyInstance() として登録されてます。

SFZSoftKeyControl::SetTextKey 関数でソフトキーメニューにテキストキーを関連付けなかった場合、 このテキストが参照されます。

※このテキストはメニューキー "0" のデフォルトメニューから参照されます。

[Note] デフォルトメニュー

メニューキー "0" のデフォルトメニューの詳細は、SFZSoftKeyControl の解説を参照してください。

参照

SFZSoftKeyControl::UnregisterText | SFZSoftKeyControl::GetText | SFZSoftKeyControl::RegisterTextRange | SFZSoftKeyControl::RegisterImage | SFZSoftKeyControl::RegisterFrameColor | SFZSoftKeyControl::RegisterForeColor | SFZSoftKeyControl::RegisterBackColor SFZSoftKeyControl::SetTextKey | SFZSoftKeyControl::~SFZSoftKeyControl | SFXWideString::EmptyInstance | SFXWideString


SFZSoftKeyControl::RegisterTextRange
ラベルのテキストをまとめて登録します。
[ public ]
SFCError RegisterTextRange(
    UInt32 originKey       // 起点となるテキストキー
    SFXPathConstRef path   // リソースファイルのパス
    UInt16 start           // 開始のリソース ID
    UInt16 end             // 終了のリソース ID
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定したとき、 path 引数に指定したリソースファイルのパスが正しくないとき、 またはstart 引数 > end 引数であるとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY
  • 内部で BREW API IShell インターフェースのインスタンスが取得できないとき: SFERR_INVALID_STATE

解説

この関数は、ラベルのテキストをまとめて登録します。

テキストキーの範囲 [key, key + (end - start)] と リソース ID の範囲 [start, end] が対応します。

[Tip] Tip

管理を簡素化するために、 起点となるテキストキーの値と開始のリソース ID の値を一致させることを推奨します。

[Note] 注意

一度登録すると 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


SFZSoftKeyControl::SetArrowBaseLength
拡張スタイルのソフトキーメニューに表示される矢印の底辺の長さを設定します。[単位:ピクセル]
[ public ]
Void SetArrowBaseLength(
    SInt16 param   // 矢印の底辺の長さ
);

解説

この関数は、拡張スタイルのソフトキーメニューに表示される矢印ラベルの底辺の長さを設定します。[単位:ピクセル]

デフォルト値: 6 ピクセル

[Note] 注意

矢印の底辺の長さが変更されると、 スタイルイベント [SFXEvent(SFEVT_RESPONDER_STYLE, SFP16_STYLE_ALIGN, 0)] が発生します。

同時に、ソフトキーコントロールを再描画領域に登録します。

[Note] 矢印ラベルの底辺の長さ

上と下の矢印ラベルの場合、三角形の横幅を意味します。

左と右の矢印ラベルの場合、三角形の縦幅を意味します。

4 つの矢印ラベルの底辺の長さはすべて同じです。

参照

SFZSoftKeyControl::GetArrowBaseLength | SFZSoftKeyControl::SetArrowHeight | SFZSoftKeyControl::SetStyle | SFXEvent | スタイルイベント [SFEVT_RESPONDER_STYLE]


SFZSoftKeyControl::SetArrowHeight
拡張スタイルのソフトキーメニューに表示される矢印ラベルの高さを設定します。[単位:ピクセル]
[ public ]
Void SetArrowHeight(
    SInt16 param   // 矢印の高さ
);

解説

この関数は、拡張スタイルのソフトキーメニューに表示される矢印ラベルの高さを設定します。[単位:ピクセル]

デフォルト値: 3 ピクセル

[Note] 注意

矢印ラベルの高さが変更されると、 スタイルイベント [SFXEvent(SFEVT_RESPONDER_STYLE, SFP16_STYLE_ALIGN, 0)] が発生します。

同時に、ソフトキーコントロールを再描画領域に登録します。

[Note] 矢印ラベルの底辺の長さ

上と下の矢印ラベルの場合、三角形の縦幅を意味します。

左と右の矢印ラベルの場合、三角形の横幅を意味します。

4 つの矢印ラベルの高さはすべて同じです。

参照

SFZSoftKeyControl::GetArrowHeight | SFZSoftKeyControl::SetArrowBaseLength | SFZSoftKeyControl::SetStyle | SFXEvent | スタイルイベント [SFEVT_RESPONDER_STYLE]


SFZSoftKeyControl::SetBaseSpace
ソフトキーコントロールの境界線とラベル間のスペース値を設定します。[単位:ピクセル]
[ public ]
Void SetBaseSpace(
    SInt16 param   // 基準のスペース値
);

解説

この関数は、ソフトキーコントロールの境界線とラベル間のスペース値[基準スペース]を設定します。[単位:ピクセル]

デフォルト値: 2 ピクセル

[Note] 注意

基準スペースが変更されると、 スタイルイベント [SFXEvent(SFEVT_RESPONDER_STYLE, SFP16_STYLE_ALIGN, 0)] が発生します。

同時に、ソフトキーコントロールを再描画領域に登録します。

[Note] 注意

ラベル同士の間隔もこの値になります。

参照

SFZSoftKeyControl::GetBaseSpace | SFXEvent | スタイルイベント [SFEVT_RESPONDER_STYLE]


SFZSoftKeyControl::SetColorKey
指定されたソフトキーメニューのラベルに色キーを設定します。
[ public ]
SFCError SetColorKey(
    UInt32 menuKey      // メニューキー(固有のキー)
    SoftkeyEnum index   // ラベル番号
    UInt32 colorKey     // 設定する色キー(固有のキー)
);
[ public ]
SFCError SetColorKey(
    UInt32 menuKey        // メニューのキー(固有のキー)
    UInt32ConstPtr keys   // 色キーの配列を表すポインタ
    UInt32 num            // ラベルの数
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定したとき、 またはmenuKey 引数に登録されていないメニューキーを指定したとき: SFERR_INVALID_PARAM

解説

この関数は、指定されたソフトキーメニューのラベルに色キーを設定します。

key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定したとき、 またはmenuKey 引数に登録されていないメニューキーを指定したときは、 SFERR_INVALID_PARAM が返ります。

引数に配列を指定して、複数のラベルの色キーをまとめて設定することも可能です。

[Note] 注意

ソフトキーコントロールを再描画領域に登録します。

[Note] デフォルトの色キー

ソフトキーメニューのラベルに色キーを設定しない場合、色キー "0" が参照されます。

色キー "0" のフレーム色、前景色、背景色の初期値は、以下の通りです。

  1. フレーム色: SFXRGBColor(0xDD, 0xDD, 0xDD, 0x00) [薄灰色]
  2. 前景色: SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00) [白色]
  3. 背景色: SFXRGBColor(0x77, 0x77, 0x77, 0x00) [灰色]

[Note] デフォルトメニュー

デフォルトメニュー(メニューキー "0")では、色キーは "0" に初期設定されます。

デフォルトメニューについては、SFZSoftKeyControl::CreateMenu 関数の解説を参照してください。

参照

SFZSoftKeyControl::GetColorKey SFZSoftKeyControl::RegisterForeColor | SFZSoftKeyControl::RegisterBackColor | SFZSoftKeyControl::RegisterFrameColor | SFZSoftKeyControl::CreateMenu


SFZSoftKeyControl::SetDefaultBackColor
ラベルのデフォルト背景色を設定します。
[ public ]
Void SetDefaultBackColor(
    SFXRGBColorConstRef param   // ラベルのデフォルト背景色
);

解説

この関数は、色キーが不正な場合に使用される、 ラベルのデフォルト背景色を設定します。

デフォルト値: SFXRGBColor(0x77, 0x77, 0x77, 0x00)[灰色]

[Note] 注意

メニューキー "0"(デフォルトメニュー)が参照する色キー "0" の背景色は、 SFXRGBColor(0x77, 0x77, 0x77, 0x00)[灰色]で初期化されます。

参照

SFZSoftKeyControl::GetDefaultBackColor | SFXRGBColor


SFZSoftKeyControl::SetDefaultForeColor
ラベルのデフォルト前景色を設定します。
[ public ]
Void SetDefaultForeColor(
    SFXRGBColorConstRef param   // ラベルのデフォルト前景色
);

解説

この関数は、色キーが不正な場合に使用される、 ラベルのデフォルト前景色を設定します。

デフォルト値: SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00)[白色]

[Note] 注意

メニューキー "0"(デフォルトメニュー)が参照する色キー "0" の前景色は、 SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00)[白色]で初期化されます。

参照

SFZSoftKeyControl::GetDefaultForeColor | SFXRGBColor


SFZSoftKeyControl::SetDefaultFrameColor
ラベルのデフォルトフレーム色を設定します。
[ public ]
Void SetDefaultFrameColor(
    SFXRGBColorConstRef param   // ラベルのデフォルトフレーム色
);

解説

この関数は、色キーが不正な場合に使用される、 ラベルのデフォルトフレーム色を設定します。

デフォルト値: SFXRGBColor(0xDD, 0xDD, 0xDD, 0xDD)[薄灰色]

[Note] 注意

メニューキー "0"(デフォルトメニュー)が参照する色キー "0" のフレーム色は、 SFXRGBColor(0xDD, 0xDD, 0xDD, 0xDD)[薄灰色]で初期化されます。

参照

SFZSoftKeyControl::GetDefaultFrameColor | SFXRGBColor


SFZSoftKeyControl::SetEnable
指定されたメニューキーとラベル番号に対応するラベルの有効状態を設定します。
[ public ]
SFCError SetEnable(
    UInt32 menuKey      // メニューキー(固有のキー)
    SoftkeyEnum index   // ラベル番号
    Bool enable         // 有効状態
);
[ public ]
SFCError SetEnable(
    UInt32 menuKey         // メニューキー(固有のキー)
    BoolConstPtr enables   // 有効状態を表す配列のポインタ
    UInt32 num             // ラベルの数
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • menuKey 引数に登録されていないメニューキーを指定したとき、 またはindex 引数に正しくないラベル番号を指定したとき: SFERR_INVALID_PARAM

解説

この関数は、指定されたメニューキーとラベル番号に対応するラベルの有効状態を設定します。

デフォルト値: SFZSoftKeyControl::CreateMenu 関数でソフトキーメニューを作成したとき、 すべてのラベルは有効状態になっています。

[Note] 注意

ソフトキーコントロールを再描画領域に登録します。

[Note] 注意

上下左右キーラベルが有効状態のとき、キー押下イベントを受信すると矢印を背景色から前景色へ変化させます。

[Note] ラベル領域の非表示

ソフトキーメニューにある各ラベルの有効状態は、デフォルト設定では有効("true")になっています。 そのため、そのままではラベル領域は表示されます。

ラベル領域を非表示にするには、 SFZSoftKeyControl::SetEnable 関数を使用して有効状態を無効("false")に設定する必要があります。

[Note] 注意

ラベルの有効状態を配列で一度に設定することもできます。

参照

SFZSoftKeyControl::GetEnable | SFZSoftKeyControl::CreateMenu


SFZSoftKeyControl::SetFont
ラベルのテキストを描画するフォントを設定します。
[ public ]
Void SetFont(
    AEEFont param   // 設定する値
);

解説

この関数は、ラベルのテキストを描画するフォントを設定します。

デフォルト値: AEE_FONT_NORMAL

[Note] 注意

フォントが変更されると、 スタイルイベント [SFXEvent(SFEVT_RESPONDER_STYLE, SFP16_STYLE_FONT, 0)] が発生します。

同時に、ソフトキーコントロールを再描画領域に登録します。

参照

SFZSoftKeyControl::GetFont | SFXEvent | スタイルイベント [SFEVT_RESPONDER_STYLE]


SFZSoftKeyControl::SetImageKey
指定されたソフトキーメニューのラベルに画像キーを設定します。
[ public ]
SFCError SetImageKey(
    UInt32 menuKey      // メニューキー(固有のキー)
    SoftkeyEnum index   // ラベル番号
    UInt32 imageKey     // 設定する画像キー(固有のキー)
);
[ public ]
SFCError SetImageKey(
    UInt32 menuKey        // メニューキー(固有のキー)
    UInt32ConstPtr keys   // 画像キーの配列を表すポインタ
    UInt32 num            // ラベルの数
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定したとき、 またはmenuKey 引数に登録されていないメニューキーを指定したとき: SFERR_INVALID_PARAM

解説

この関数は、指定されたソフトキーメニューのラベルに画像キーを設定します。

key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定したとき、 またはmenuKey 引数に登録されていないメニューキーを指定したときは、 SFERR_INVALID_PARAM が返ります。

引数に配列を指定して、複数のラベルの画像キーをまとめて設定することも可能です。

[Note] 注意

ソフトキーコントロールを再描画領域に登録します。

[Note] デフォルトの画像キー

ソフトキーメニューのラベルに画像キーを設定しない場合、画像キー "0" が参照されます。

画像キー "0" の画像の初期値は、 SFBImageSmp::EmptyInstance() です。

[Note] デフォルトメニュー

デフォルトメニュー(メニューキー "0")では、画像キーは "0" に初期設定されます。

デフォルトメニューについては、SFZSoftKeyControl::CreateMenu 関数の解説を参照してください。

参照

SFZSoftKeyControl::GetImageKey | SFZSoftKeyControl::RegisterImage | SFZSoftKeyControl::RegisterImageRange | SFZSoftKeyControl::CreateMenu


SFZSoftKeyControl::SetLabelRectangle
指定されたラベルの矩形領域を設定します。
[ protected ]
Void SetLabelRectangle(
    SoftkeyEnum index                // ラベル番号
    SFXRectangleConstRef rectangle   // ラベルの領域
);

解説

この関数は、指定されたラベルの矩形領域を設定します。

[Note] 注意

コントロールの領域が変更されたときなど、 独自にラベルの領域を再計算したい場合に呼び出します。

使用例

// 実領域変更通知ハンドラ
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;
}

参照

SFZSoftKeyControl::SoftkeyEnum | SFZSoftKeyControl::GetLabelRectangle


SFZSoftKeyControl::SetStyle
ソフトキーコントロールのスタイルを設定します。
[ public ]
Void SetStyle(
    StyleEnum param   // スタイル
);

解説

この関数は、メニューのスタイルを設定します。

3 つのラベルからなるソフトキーメニューと 9 つのラベルからなるソフトキーメニューから選択します。 前者を標準スタイル、後者を拡張スタイルと呼びます。

デフォルト値: SFZSoftKeyControl::DEFAULT_STYLE(標準スタイル)

[Note] 注意

スタイルはアプリ実行時に動的に変更可能です。

メニューのスタイルが変更されると、 スタイルイベント [SFXEvent(SFEVT_RESPONDER_STYLE, SFP16_STYLE_ALIGN, 0)] が発生します。

同時に、ソフトキーコントロールを再描画領域に登録します。

標準スタイル:

拡張スタイル:

参照

SFZSoftKeyControl::GetStyle | SFZSoftKeyControl::StyleEnum | SFXEvent | スタイルイベント [SFEVT_RESPONDER_STYLE]


SFZSoftKeyControl::SetTextKey
指定されたソフトキーメニューのラベルにテキストキーを設定します。
[ public ]
SFCError SetTextKey(
    UInt32 menuKey      // メニューキー(固有のキー)
    SoftkeyEnum index   // ラベル番号
    UInt32 textKey      // 設定するテキストキー(固有のキー)
);
[ public ]
SFCError SetTextKey(
    UInt32 menuKey        // メニューキー(固有のキー)
    UInt32ConstPtr keys   // テキストキーの配列を表すポインタ
    UInt32 num            // ラベルの数
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定したとき、 またはmenuKey 引数に登録されていないメニューキーを指定したとき: SFERR_INVALID_PARAM

解説

この関数は、指定されたソフトキーメニューのラベルにテキストキーを設定します。

key 引数に INVALID_KEY(=UINT32_MAXIMUM)を指定したとき、 またはmenuKey 引数に登録されていないメニューキーを指定したときは、 SFERR_INVALID_PARAM が返ります。

引数に配列を指定して、複数のラベルのテキストキーをまとめて設定することも可能です。

[Note] 注意

ソフトキーコントロールを再描画領域に登録します。

[Note] デフォルトのテキストキー

ソフトキーメニューのラベルにテキストキーを設定しない場合、テキストキー "0" が参照されます。

テキストキー "0" のテキストの初期値は、 SFXWideString::EmptyInstance() です。

[Note] デフォルトメニュー

デフォルトメニュー(メニューキー "0")では、テキストキーは "0" に初期設定されます。

デフォルトメニューについては、SFZSoftKeyControl::CreateMenu 関数の解説を参照してください。

参照

SFZSoftKeyControl::GetTextKey | SFZSoftKeyControl::RegisterText | SFZSoftKeyControl::RegisterTextRange | SFZSoftKeyControl::CreateMenu


SFZSoftKeyControl::UnBind
指定されたレスポンダとの関連付けを解消します。
[ public ]
Void UnBind(
    SFYResponderPtr responder   // レスポンダ
);
[ public ]
Void UnBind(
    SFYResponderSmpConstRef responder   // レスポンダ
);

解説

この関数は、指定されたレスポンダとの関連付けを解消します。

指定されたレスポンダがこのソフトキーコントロールのソフトキーメニューと関連付けられていない場合は、 何も行われません。

[Note] 注意

この関数は、内部的に SFZSoftKeyControl::Bind 関数で関連付けられたレスポンダの状態が無効状態になったときや、 SFZSoftKeyControl::~SFZSoftKeyControl デストラクタ内から内部的に呼び出されます。

参照

SFZSoftKeyControl::Bind | SFZSoftKeyControl::~SFZSoftKeyControl | 状態


SFZSoftKeyControl::UnregisterColor
指定された色キーへの 3 色(フレーム色、前景色、背景色)の登録を解除します。
[ public ]
Void UnregisterColor(
    UInt32 key   // 色キー(固有のキー)
);

解説

この関数は、指定された色キーへの 3 色(フレーム色、前景色、背景色)の登録を解除します。

このとき、その 3 色(フレーム色、前景色、背景色)は解放されます。

存在しない色キーを指定された場合、何もしません。

[Note] 注意

キャッシュを一時的に無効化し、 ソフトキーコントロールを再描画領域に登録します。

[Caution] 注意

ソフトキーメニューが破棄された色キーを参照している場合、 ラベルは SFZSoftKeyControl::SetDefaultBackColor / SFZSoftKeyControl::SetDefaultForeColor / SFZSoftKeyControl::SetDefaultFrameColor 関数で設定されるデフォルト色で描画されます。

参照

SFZSoftKeyControl::RegisterFrameColor | SFZSoftKeyControl::RegisterForeColor | SFZSoftKeyControl::RegisterBackColor | SFZSoftKeyControl::SetDefaultBackColor | SFZSoftKeyControl::SetDefaultForeColor | SFZSoftKeyControl::SetDefaultFrameColor


SFZSoftKeyControl::UnregisterImage
指定された画像キーへの画像の登録を解除します。
[ public ]
Void UnregisterImage(
    UInt32 key   // 画像キー(固有のキー)
);

解説

この関数は、指定された画像キーへの画像の登録を解除します。

このとき、その画像は解放されます。

存在しない画像キーを指定された場合、何もしません。

[Note] 注意

キャッシュを一時的に無効化し、 ソフトキーコントロールを再描画領域に登録します。

[Caution] 注意

ソフトキーメニューが破棄された画像キーを参照している場合、 画像は描画されません。

参照

SFZSoftKeyControl::RegisterImage


SFZSoftKeyControl::UnregisterText
指定されたテキストキーへのテキストの登録を解除します。
[ public ]
Void UnregisterText(
    UInt32 key   // テキストキー(固有のキー)
);

解説

この関数は、指定されたテキストキーへのテキストの登録を解除します。

このとき、そのテキストは解放されます。

存在しないテキストキーを指定された場合、何もしません。

[Note] 注意

キャッシュを一時的に無効化し、 ソフトキーコントロールを再描画領域に登録します。

[Caution] 注意

ソフトキーメニューが破棄されたテキストキーを参照している場合、 テキストは描画されません。

参照

SFZSoftKeyControl::RegisterText


SFZSoftKeyControl::CodeEnum
SFZSoftKeyControl クラスを表す定数です。
enum CodeEnum {
    CODE_TYPE = four_char_code('c', 's', 'k', 'e'),
};
SFMTYPEDEFTYPE(CodeEnum)

参照

SFYResponder::GetType | SFYResponder::SetType |


SFZSoftKeyControl::KeyEnum
特別なキー値を表す定数です。
enum KeyEnum {
    DEFAULT_KEY = 0,
    INVALID_KEY = UINT32_MAXIMUM
};
SFMTYPEDEFTYPE(KeyEnum)
    

解説

キー値 DEFAULT_KEY(=0)のメニューをデフォルトメニューと呼びます。

ソフトキーメニュー作成後は、 すべての要素キー(テキスト、画像、3 色)は DEFAULT_KEY にセットされます。

メニューキーや要素キーに INVALID_KEY は登録できません。

参照

SFZSoftKeyControl::CreateMenu


SFZSoftKeyControl::SoftkeyEnum
ソフトキーを表す定数です。
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)

解説

ラベル番号として使用されます。


SFZSoftKeyControl::StyleEnum
SFZSoftKeyControl のスタイルを表す定数です。
enum StyleEnum {
    STANDARD       = 0,        // 標準スタイル (3 つのラベル)
    EXTENSION,                 // 拡張スタイル (5 つのラベルと 4 つの上下左右キーラベル)
    DEFAULT_STYLE  = STANDARD  // デフォルト値
};
SFMTYPEDEFTYPE(StyleEnum)