前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFYBoxControl
ボックスコントロールを表す抽象クラスです。
#include <SFYBoxControl.h.hpp>
class SFYBoxControl : public SFYControl;
SFMTYPEDEFCLASS(SFYBoxControl)

継承図

SFYBoxControl クラスの継承図

協調図

SFYBoxControl クラスの協調図

解説

■ 仕様と使い方

SFYBoxControl は各種ボックスコントロールを実装するための起点となるクラスです。

SFYBoxControl は、 ボックスの描画機能と操作キーの管理を実装し、 いくつかの仮想関数のデフォルトの動作も実装します。

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

□ボックスコントロールの構成

  1. 立体的に見えるようにベベルカラーで描画される外枠
  2. 外枠を上下左右1ピクセルずつ縮小した中枠(フレーム)
  3. 中枠(フレーム)を上下左右1ピクセルずつ縮小した内枠(フォーカス・フレーム)[フォーカス時だけ描画される]
  4. 内枠(フォーカス・フレーム)で囲まれるコンテンツ領域

デフォルトの実装では、 ボックスコントロールは状態に応じて以下のように描画されます。

図 285. ボックスコントロールの拡大図[活性状態または操作可能状態]


ボックスコントロールの拡大図[活性状態または操作可能状態]

外枠は SFYBoxControl::SetBevelColor 関数で設定したベベルカラー(SFXBevelColor)、

中枠(フレーム)は SFYBoxControl::SetFrameColor 関数で設定した色(SFXRGBColor)で描画されます。

内枠(フォーカス・フレーム)は SFYWidget::SetBackgroundColor 関数で設定した色で塗り潰されます(コンテンツ領域と同じ色になります)。

コンテンツ領域は SFYWidget::SetBackgroundColor 関数で設定した色で塗り潰されます。

図 286. ボックスコントロールの拡大図[非活性状態]


ボックスコントロールの拡大図[非活性状態]

外枠は SFYBoxControl::SetBevelColor 関数で設定したベベルカラー(SFXBevelColor)、

中枠(フレーム)は SFYBoxControl::SetFrameColor 関数で設定した色をそれぞれ非活性状態に合わせて補正した色で描画されます。

非活性状態にあるボックスコントロールは、 外枠が SFYBoxControl::SetBevelColor 関数で設定したベベルカラーのベースカラーで描画されるため平面的に見えます。

内枠(フォーカス・フレーム)は SFYWidget::SetBackgroundColor 関数で設定した色で塗り潰されます(コンテンツ領域と同じ色になります)。

コンテンツ領域は SFYWidget::SetBackgroundColor 関数で設定した色で塗り潰されます。

図 287. ボックスコントロールの拡大図[フォーカス状態]


ボックスコントロールの拡大図[フォーカス状態]

外枠は SFYBoxControl::SetBevelColor 関数で設定したベベルカラー(SFXBevelColor)をフォーカス状態に合わせて補正した色で描画されます。

中枠(フレーム)は SFYBoxControl::SetFocusColor 関数で設定した色をフォーカス状態に合わせて補正した色で描画されます。

内枠(フォーカス・フレーム)は SFYBoxControl::SetFocusColor 関数で設定した色で描画されます。

コンテンツ領域は SFYWidget::SetBackgroundColor 関数で設定した色で塗り潰されます。

[Caution] フォーカス状態にあるときのフレームの色

ボックスコントロールがフォーカス状態にあるとき、中枠(フレーム)は SFYBoxControl::SetFrameColor 関数で設定した色で描画されません。 SFYBoxControl::SetFocusColor 関数で設定した内枠(フォーカス・フレーム)の色をフォーカス状態に合わせて補正した色で描画されます。

■ イベントとハンドラ

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

[Note] 注意

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

[Tip] Tip

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

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

イベント 仮想関数(ハンドラ) デフォルトの動作 オーバーライド
SFYBoxControl::SetOperateKey で設定された操作キーの SFEVT_KEY イベント SFYBoxControl::HandleOperateKey 結果イベントを送信する※1 任意
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST) イベント SFYWidget::HandleBoundRequest 推奨
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE) イベント SFYWidget::HandleBoundOptimize 推奨
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL) イベント SFYControl::HandleBoundReal 仮想領域を実領域に一致させる※2 任意
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL) イベント SFYWidget::HandleBoundVirtual 任意
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_GLOBAL) イベント SFYWidget::HandleBoundGlobal 非推奨[廃止予定]
(SFEVT_RESPONDER_RENDER, SFP16_RENDER_REQUEST) イベント SFYWidget::HandleRenderRequest 任意

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

[Note] 注釈

※1. SFYResponder::InvokeForward(SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_OK, GetCurrentValue()), false) を実行します。

※2. SFYResponder::SetVirtualBound(SFXRectangle(SFXGrid::ZeroInstance(), GetRealBound().GetSize())) を実行します。つまり、仮想領域を実領域に一致させます。

ユーザー定義ボックスコントロールを作成するときに最低限必要なコードを示します。

例 868. 宣言

SFMTYPEDEFRESPONDER(USRBoxControl)
class USRBoxControl : public SFYBoxControl {
    SFMSEALRESPONDER(USRBoxControl)
    SFMRESPONDERINSTANTIATEFOUR(USRBoxControl, SFYBoxControl, SFYControl, SFYWidget, SFYResponder)
public:

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

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

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

例 869. 実装

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

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

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

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

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

Void USRBoxControl::HandleBoundRequest(SFXRectanglePtr rectangle) const
{
    // SFYBoxControl::DrawBox 関数を利用するので、ボックスマージンの大きさ分だけ縮小する
    rectangle->Deflate(GetBoxMargin());

    // ボックス内部に最適な大きさを計算して rectangle パラメータに設定する
    // この関数内では、rectangle の原点は変更せず、rectangle のサイズだけを設定する(推奨)


    // SFYBoxControl::DrawBox 関数を利用するので、ボックスマージンの大きさ分だけ拡大する
    rectangle->Inflate(GetBoxMargin());
    return;
}

Void USRBoxControl::HandleBoundOptimize(SFXRectanglePtr rectangle) const
{
    // SFYBoxControl::DrawBox 関数を利用するので、ボックスマージンの大きさ分だけ縮小する
    rectangle->Deflate(GetBoxMargin());

    // ボックス内部に最適な大きさを rectangle パラメータ内の大きさに
    // 収まるように計算し、rectangle パラメータに設定する
    // この関数内では、rectangle の原点は変更せず、rectangle のサイズだけを設定する(推奨)


    // SFYBoxControl::DrawBox 関数を利用するので、ボックスマージンの大きさ分だけ拡大する
    rectangle->Inflate(GetBoxMargin());
    return;
}

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

Void USRBoxControl::HandleRenderRequest(SFXGraphicsPtr graphics) const
{
    // SFYBoxControl::DrawBox 関数を使用してボックスを描画する
    DrawBox(graphics, GetLocalBound());

    // ボックス内部を描画する
    return;
}

参照

SFYBoxControl::SFYBoxControl | SFYControl::SFYControl | SFYWidget::SFYWidget | SFYControl | SFZSingleTextBoxControl | SFZSingleEditBoxControl | SFZMultipleTextBoxControl | SFZMultipleEditBoxControl | SFZImageBoxControl | キーイベント[SFEVT_KEY] | 領域イベント[SFEVT_RESPONDER_BOUND] | 描画イベント[SFEVT_RESPONDER_RENDER] | 状態 | ボックスコントロールを表す抽象クラス[SFYBoxControl]

メンバ

コンストラクタ/デストラクタ
SFYBoxControl( Void )
SFYBoxControl クラスのコンストラクタです。
~SFYBoxControl( Void )
SFYBoxControl クラスのデストラクタです。
パブリック関数
SFXBevelColorConstRef GetBevelColor( Void )
ボックスコントロールの外枠を描画するためのベベルカラーを取得します。
SFXRGBColorConstRef GetFocusColor( Void )
フォーカス状態にあるときの内枠の色を取得します。
SFXRGBColorConstRef GetFrameColor( Void )
中枠の色を取得します。
AVKType GetOperateKey( Void )
操作キーを取得します。
Void SetBevelColor( SFXBevelColorConstRef param )
ボックスコントロールの外枠を描画するためのベベルカラーを設定します。
Void SetFocusColor( SFXRGBColorConstRef param )
フォーカス状態にあるときの内枠の色を設定します。
Void SetFrameColor( SFXRGBColorConstRef param )
中枠の色を設定します。
Void SetOperateKey( AVKType param )
操作キーを設定します。
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 DrawBox( SFXGraphicsPtr graphics , SFXRectangleConstRef rectangle )
ボックスコントロールを描画します。
static
SFXMarginConstRef
GetBoxMargin( Void )
ボックスコントロールのマージンの値を取得します。
Void HandleOperateKey( Void )
操作キーの SFEVT_KEY イベントを受信したときに呼び出される関数です。
static
SFYResponderSmp
Factory( SFYResponderPtr responder , SFCErrorPtr exception = null ) (SFYResponder から継承)
NewInstance 関数の実装を補助します。
SFYResponderSmp GetThis( Void ) (SFYResponder から継承)
このレスポンダのスマートポインタを取得します。
Void HandleBoundGlobal( SFXRectangleConstRef rectangle ) (SFYWidget から継承)
[非推奨(廃止予定 API)] グローバル領域が変化したときに呼び出される関数です。
Void HandleBoundOptimize( SFXRectanglePtr rectangle ) (SFYWidget から継承)
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_OPTIMIZE) イベントを受信したときに呼び出される関数です(指定した矩形に収まる範囲内で最適な領域を計算します)。
Void HandleBoundReal( Void ) (SFYControl から継承)
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REAL) イベントを受信したときに呼び出される関数です (実領域が変化したときの処理を行います)。
Void HandleBoundRequest( SFXRectanglePtr rectangle ) (SFYWidget から継承)
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_REQUEST) イベントを受信したときに呼び出される関数です(最適な領域を計算します)。
Void HandleBoundVirtual( Void ) (SFYWidget から継承)
(SFEVT_RESPONDER_BOUND, SFP16_BOUND_VIRTUAL) イベントを受信したときに呼び出される関数です (仮想領域が変化したときの処理を行います)。
Void HandleRenderRequest( SFXGraphicsPtr graphics ) (SFYWidget から継承)
描画イベントを受信したときに呼び出される関数です(レスポンダを描画します)。
Void SetType( SFCType param ) (SFYResponder から継承)
指定された値をこのレスポンダのタイプに設定します。
CodeEnum
SFYBoxControl クラスを表す定数です。
HorizontalEnum (SFYResponder から継承)
水平方向のアライメントを表す定数です。
VerticalEnum (SFYResponder から継承)
垂直方向のアライメントを表す定数です。

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

解説

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

  1. タイプを ".box" に設定します。
  2. フォーカス状態にあるときの内枠の色を SFXRGBColor(0xAA, 0xAA, 0xAA, 0x00)[灰色] に設定します。
  3. 中枠の色を SFXRGBColor(0x00, 0x00, 0x00, 0x00)[黒色] に設定します。
  4. ボックスコントロールの外枠を描画するためのベベルカラーを SFXBevelColor(SFXRGBColor(0x99, 0x99, 0x99, 0x00), SFXRGBColor(0xEE, 0xEE, 0xEE, 0x00), SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00)) に設定します。
  5. 操作キーを AVK_SELECT に設定します。
  6. 下表にあるハンドラをレスポンダに登録します。

表 233. イベントハンドラ

イベント ハンドラの内容
SFYBoxControl::SetOperateKey で設定された操作キーの SFEVT_KEY イベント SFYBoxControl::HandleOperateKey 関数を呼び出す。
[Note] 注意
SFYBoxControl クラスを継承するレスポンダでは、 上記イベントが発生すると、それに対応するハンドラが呼び出されます。

内部実装

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

/*protected */SFYBoxControl::SFYBoxControl(Void) static_throws
{
    static SFXBevelColor::AtomRecConst          bevel[] = {
        {{{{0x00, 0x99, 0x99, 0x99}}}, {{{0x00, 0xEE, 0xEE, 0xEE}}}, {{{0x00, 0xFF, 0xFF, 0xFF}}}}
    };
    static SFXRGBColor::AtomRecConst            rgb[] = {
        {{{0x00, 0xAA, 0xAA, 0xAA}}},
        {{{0x00, 0x00, 0x00, 0x00}}}
    };
    static SFXEventRange::AtomRecConst          trange[] = {
        #if TARGET_VERSION_GE(3, 0, 0)
        {       SFEVT_KEY_PRESS,      SFEVT_KEY_RELEASE,          SFP16_BEGIN,            SFP16_END},
        #else
        {       SFEVT_KEY_PRESS,         SFEVT_KEY_HELD,          SFP16_BEGIN,            SFP16_END},
        #endif
        {             SFEVT_KEY,              SFEVT_KEY,          SFP16_BEGIN,            SFP16_END}
    };
    SFYHandler::RuleRec                         trule[lengthof(trange)];

    if (static_try()) {
        SetType(CODE_TYPE);
        trule[0].spp = XANDLER_FUNCTION(OnShield);
        trule[0].reference = this;
        trule[1].spp = XANDLER_FUNCTION(OnKey);
        trule[1].reference = this;
        static_throw(RegisterHandler(atomic_cast(trange), trule, lengthof(trange)));
        if (static_try()) {
            _color.focus.Set(rgb[0]);
            _color.frame.Set(rgb[1]);
            _color.bevel.Set(bevel[0]);
            _key.operate = AVK_SELECT;
        }
    }
}// SFYBoxControl::SFYBoxControl //

/*private */XANDLER_IMPLEMENT_BOOLEVENT(SFYBoxControl, OnShield, invoker, event)
{
    unused(invoker);
    return (event.GetP16() == _key.operate);
}// XANDLER_IMPLEMENT_BOOLEVENT(SFYBoxControl, OnShield) //

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

    unused(invoker);
    if (event.GetP16() == _key.operate) {
        HandleOperateKey();
        result = true;
    }
    return result;
}// XANDLER_IMPLEMENT_BOOLEVENT(SFYBoxControl, OnKey) //

参照

SFYResponder::SetType | SFYBoxControl::CodeEnum | SFYBoxControl::SetFocusColor | SFYBoxControl::SetFrameColor | SFYBoxControl::SetBevelColor | SFYBoxControl::HandleOperateKey | SFXEvent | SFXBevelColor | SFXRGBColor | タイプ | イベント | キーイベント[SFEVT_KEY]


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

解説

このデストラクタは、何も行いません。

内部実装

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

/*protected virtual */SFYBoxControl::~SFYBoxControl(Void)
{
}// SFYBoxControl::~SFYBoxControl //

SFYBoxControl::DrawBox
ボックスコントロールを描画します。
[ protected, const ]
Void DrawBox(
    SFXGraphicsPtr graphics          // グラフィックスオブジェクト
    SFXRectangleConstRef rectangle   // 矩形
);

解説

この関数は、ボックスコントロールを描画します。

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

[Tip] Tip
この関数は、SFYBoxControl クラスを継承する具象クラスの HandleRender 関数内で呼び出されます。

デフォルトの実装では、 ボックスコントロールのコンテンツ領域を含むベベル領域を状態に応じて以下のように描画します。

■ボックスコントロールの構成

  1. 立体的に見えるようにベベルカラーで描画される外枠
  2. 全体の矩形領域を上下左右1ピクセルずつ縮小した中枠(フレーム)
  3. 中枠(フレーム)を更に上下左右1ピクセルずつ縮小した内枠(フォーカス・フレーム)[フォーカス状態にあるときだけ描画される]
  4. 内枠(フォーカス・フレーム)で囲まれるコンテンツ領域

図 288. ボックスコントロールの拡大図[活性状態または操作可能状態]


ボックスコントロールの拡大図[活性状態または操作可能状態]

外枠は SFYBoxControl::SetBevelColor 関数で設定したベベルカラー(SFXBevelColor)、 中枠(フレーム)は SFYBoxControl::SetFrameColor 関数で設定した色(SFXRGBColor)で描画されます。

内枠(フォーカス・フレーム)は SFYWidget::SetBackgroundColor 関数で設定した色で塗り潰されます(コンテンツ領域と同じ色になります)。

コンテンツ領域は SFYWidget::SetBackgroundColor 関数で設定した色で塗り潰されます。

図 289. ボックスコントロールの拡大図[非活性状態]


ボックスコントロールの拡大図[非活性状態]

外枠は SFYBoxControl::SetBevelColor 関数で設定したベベルカラー(SFXBevelColor)、 中枠(フレーム)は SFYBoxControl::SetFrameColor 関数で設定した色をそれぞれ非活性状態に合わせて補正した色で描画されます。

非活性状態にあるボックスコントロールは、 外枠が SFYBoxControl::SetBevelColor 関数で設定したベベルカラーのベースカラーだけで描画されるため平面的に見えます。

内枠(フォーカス・フレーム)は SFYWidget::SetBackgroundColor 関数で設定した色で塗り潰されます(コンテンツ領域と同じ色になります)。

コンテンツ領域は SFYWidget::SetBackgroundColor 関数で設定した色で塗り潰されます。

図 290. ボックスコントロールの拡大図[フォーカス状態]


ボックスコントロールの拡大図[フォーカス状態]

外枠は SFYBoxControl::SetBevelColor 関数で設定したベベルカラー(SFXBevelColor)をフォーカス状態に合わせて補正した色で描画されます。

中枠(フレーム)は SFYBoxControl::SetFocusColor 関数で設定した色をフォーカス状態に合わせて補正した色で描画されます。

内枠(フォーカス・フレーム)は SFYBoxControl::SetFocusColor 関数で設定した色で描画されます。

コンテンツ領域は SFYWidget::SetBackgroundColor 関数で設定した色で塗り潰されます。

[Caution] フォーカス状態にあるときのフレームの色

ボックスコントロールがフォーカス状態にあるとき、中枠(フレーム)は SFYBoxControl::SetFrameColor 関数で設定した色で描画されません。 SFYBoxControl::SetFocusColor 関数で設定した内枠(フォーカス・フレーム)の色をフォーカス状態に合わせて補正した色で描画されます。

内部実装

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

/*protected */Void SFYBoxControl::DrawBox(SFXGraphicsPtr graphics, SFXRectangleConstRef rectangle) const
{
    SFXRectangle                                lx;
    SFXBevelColor                               bevel;
    SFXRGBColor                                 rgb;

    lx.Set(rectangle);
    bevel.Set(_color.bevel);
    if (!GetStateActive(true)) {
        bevel.SetLight(bevel.GetBase());
        bevel.SetDark(bevel.GetBase());
    }
    graphics->DrawBevelRectangle(lx, bevel);
    lx.Deflate(1, 1);
    if (GetStateFocus(true)) {
        rgb.Set(_color.focus);
        if (GetStateActive(true)) {
            if (rgb.GetBrightness() > 0x7F) {
                rgb.SubRGB(0x55);
            }
            else {
                rgb.AddRGB(0x55);
            }
        }
        graphics->DrawRectangle(lx, rgb);
        lx.Deflate(1, 1);
        graphics->DrawRectangle(lx, _color.focus);
    }
    else {
        rgb.Set(_color.frame);
        if (!GetStateActive(true)) {
            if (rgb.GetBrightness() > 0x7F) {
                rgb.SubRGB(0x44);
            }
            else {
                rgb.AddRGB(0x44);
            }
        }
        graphics->DrawRectangle(lx, rgb);
        lx.Deflate(1, 1);
        graphics->DrawRectangle(lx, GetBackgroundColor());
    }
    lx.Deflate(1, 1);
    graphics->FillRectangle(lx, GetBackgroundColor());
    return;
}// SFYBoxControl::DrawBox //

参照

SFYBoxControl::GetBoxMargin | SFYBoxControl::SetBevelColor | SFYBoxControl::SetFrameColor | SFYBoxControl::SetFocusColor | SFYWidget::SetBackgroundColor | SFXBevelColor | SFXRGBColor | 状態


SFYBoxControl::GetBevelColor
ボックスコントロールの外枠を描画するためのベベルカラーを取得します。
[ public, const ]
SFXBevelColorConstRef GetBevelColor(Void);

戻り値

ボックスコントロールの外枠を描画するためのベベルカラー。

解説

この関数は、ボックスコントロールの外枠を描画するためのベベルカラーを取得します。

参照

SFYBoxControl::SetBevelColor | SFXBevelColor | SFXRGBColor


SFYBoxControl::GetBoxMargin
ボックスコントロールのマージンの値を取得します。
[ protected, static ]
SFXMarginConstRef GetBoxMargin(Void);

戻り値

ボックスコントロールのマージン[SFXMargin(3, 3, 3, 3)]。

解説

この関数は、ボックスコントロールのマージンの値を取得します。

ボックスコントロールのマージンとは、 テキストや画像を描画するためのコンテンツ領域を囲む幅3ピクセルのボックスコントロールの枠領域のことです。 ローカル領域の左端、上端、右端、下端からそれぞれ3ピクセルの余白領域[SFXMargin(3, 3, 3, 3)]です。

図 291. ボックスコントロールの枠領域 : フォーカス状態にあるときの拡大図


ボックスコントロールの枠領域 : フォーカス状態にあるときの拡大図

ボックスコントロールの枠領域(マージン)は、外枠、中枠、内枠からなる幅3ピクセルの枠領域です。

ボックスコントロールのコンテンツ領域は、この枠領域に囲まれる部分です。

テキストや画像は、コンテンツ領域に描画されます。

この領域の描画については、SFYBoxControl::DrawBox 関数の説明を参照してください。

参照

SFXMargin | SFYBoxControl::DrawBox | ローカル領域


SFYBoxControl::GetFocusColor
フォーカス状態にあるときの内枠の色を取得します。
[ public, const ]
SFXRGBColorConstRef GetFocusColor(Void);

戻り値

ボックスコントロールがフォーカス状態にあるときに描画される内枠(フォーカスフレーム)の色(SFXRGBColor)

解説

この関数は、フォーカス状態にあるときの内枠の色を取得します。

参照

SFYBoxControl::SetFocusColor


SFYBoxControl::GetFrameColor
中枠の色を取得します。
[ public, const ]
SFXRGBColorConstRef GetFrameColor(Void);

戻り値

ボックスコントロールの中枠(フレーム)の色。

解説

この関数は、中枠の色を取得します。

参照

SFYBoxControl::SetFrameColor


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

戻り値

ボックスコントロールの操作キー。

解説

この関数は、ボックスコントロールの操作キーを取得します。

参照

SFYBoxControl::SetOperateKey | AVKType


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

解説

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

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

デフォルトの実装では、 自分自身に結果イベント [SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_OK, SFYControl::GetCurrentValue())] を送信します。

内部実装

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

/*protected virtual */Void SFYBoxControl::HandleOperateKey(Void)
{
    InvokeForward(SFXEvent(SFEVT_RESPONDER_RESULT, SFP16_RESULT_OK, GetCurrentValue()), false);
    return;
}// SFYBoxControl::HandleOperateKey //

参照

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


SFYBoxControl::SetBevelColor
ボックスコントロールの外枠を描画するためのベベルカラーを設定します。
[ public ]
Void SetBevelColor(
    SFXBevelColorConstRef param   // 設定するベベルカラーの値
);

解説

この関数は、 立体的に見えるボックスコントロールの外枠を描画するためのベベルカラー(SFXBevelColor)を設定します。

デフォルト値: SFXBevelColor(SFXRGBColor(0x99, 0x99, 0x99, 0x00), SFXRGBColor(0xEE, 0xEE, 0xEE, 0x00), SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00))

詳細は SFYBoxControl::DrawBox を参照してください。

[Note] 活性状態、操作可能状態、フォーカス状態にあるときのボックスコントロールの外枠

左辺と上辺がベベルカラーのライト部分、右辺と下辺がベベルカラーのダーク部分、 左下隅と右上隅がベベルカラーのベースカラーで描画されます。 この効果により、ボックスコントロールは立体的に見えます。

[Note] ボックスコントロールが非活性状態にあるとき

ライトカラーとダークカラーはベベルカラー(SFXBevelColor)のベースカラーに設定されます。 ボックスコントロールの外枠はすべてベースカラーで描画されることになるのでボックスコントロールは平面的に見えます。

参照

SFYBoxControl::GetBevelColor | SFYBoxControl::DrawBox | SFYBoxControl::SetFocusColor SFYBoxControl::DrawBox | SFXBevelColor | SFXRGBColor | 状態


SFYBoxControl::SetFocusColor
フォーカス状態にあるときの内枠の色を設定します。
[ public ]
Void SetFocusColor(
    SFXRGBColorConstRef param   // 設定する色
);

解説

この関数は、 ボックスコントロールがフォーカス状態にあるときに描画される内枠(フォーカスフレーム)の色を設定します。

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

詳細は SFYBoxControl::DrawBox を参照してください。

[Caution] フォーカス状態にあるときの中枠(フレーム)の色

ボックスコントロールがフォーカス状態にあるとき、 中枠(フレーム)は、 SFYBoxControl::SetFocusColor 関数によって設定される色の明度を基準にして計算された色で描画されます。 そのため、SFYBoxControl::SetFrameColor 関数によって設定された色で中枠(フレーム)は描画されません。

内枠(フォーカス・フレーム)の色の明度が 0x7F より大きい場合はその色の RGB 値からそれぞれ 0x55 を減算した色、 0x7F 以下の場合はその色の RGB 値にそれぞれ 0x55 を加算した色で中枠(フレーム)は描画されます。

外枠は SFYBoxControl::SetBevelColor 関数で設定したベベルカラー(SFXBevelColor)で描画されます。

内枠(フォーカス・フレーム)の色は、SFYBoxControl::SetFocusColor 関数によって設定される色です。

色の明度とは、SFXRGBColor::GetBrightness 関数によって得られる値です。

参照

SFYBoxControl::GetFocusColor | SFYBoxControl::DrawBox | SFYBoxControl::SetFrameColor | SFYBoxControl::SetBevelColor | SFXRGBColor::GetBrightness | SFXBevelColor | SFXRGBColor | 状態


SFYBoxControl::SetFrameColor
中枠の色を設定します。
[ public ]
Void SetFrameColor(
    SFXRGBColorConstRef param   // 設定する色
);

解説

この関数は、ボックスコントロールの中枠(フレーム)の色を設定します。

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

詳細は SFYBoxControl::DrawBox を参照してください。

[Caution] 非活性状態にあるときの中枠(フレーム)の色

非活性状態にあるときの中枠(フレーム)の色は、 SFYBoxControl::SetFrameColor 関数によって設定された色の明度を基準にして計算された色で描画されます。

基準となる色の明度が 0x7F より大きい場合はその色の RGB 値からそれぞれ 0x44 を減算した色、 0x7F 以下の場合はその色の RGB 値にそれぞれ 0x44 を加算した色で中枠(フレーム)は描画されます。

色の明度とは、SFXRGBColor::GetBrightness 関数によって得られる値です。

[Caution] フォーカス状態にあるときの中枠(フレーム)の色

フォーカス状態にあるときの中枠(フレーム)の色は、 SFYBoxControl::SetFocusColor 関数によって設定される色の明度を基準にして計算された色になります。 そのため、SFYBoxControl::SetFrameColor 関数によって設定された色で中枠(フレーム)は描画されません。

フォーカス状態にあるときは内枠(フォーカス・フレーム)が描画されます。 内枠(フォーカス・フレーム)の色は、SFYBoxControl::SetFocusColor 関数によって設定される色です。

内枠(フォーカス・フレーム)の色の明度が 0x7F より大きい場合はその色の RGB 値からそれぞれ 0x55 を減算した色、 0x7F 以下の場合はその色の RGB 値にそれぞれ 0x55 を加算した色で中枠(フレーム)は描画されます。

色の明度とは、SFXRGBColor::GetBrightness 関数によって得られる値です。

参照

SFYBoxControl::GetFrameColor | SFYBoxControl::DrawBox | SFYBoxControl::SetFocusColor | SFYBoxControl::SetFrameColor | SFYBoxControl::DrawBox | SFXRGBColor::GetBrightness | SFXRGBColor | 状態


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

解説

この関数は、ボックスコントロールの操作キーを設定します。

操作キーが押下されると、 SFYBoxControl::HandleOperateKey 関数が呼び出されます。

デフォルト値: AVK_SELECT

参照

SFYBoxControl::GetOperateKey | SFYBoxControl::HandleOperateKey | AVKType


SFYBoxControl::CodeEnum
SFYBoxControl クラスを表す定数です。
enum CodeEnum {
    CODE_TYPE = four_char_code('.', 'b', 'o', 'x')
};
SFMTYPEDEFTYPE(CodeEnum)

参照

SFYResponder::GetType | SFYResponder::SetType