![]() ![]() ![]()
|
SophiaFramework UNIVERSE 5.0 |
すべてのレスポンダは SFYResponder クラスを継承し、 レスポンダシステムを構成するために必要な機能を提供します。
開発者が独自にユーザー定義レスポンダを作成する場合、 SFYResponder よりも具体的なクラスを起点できると実装がそれだけ簡単になります。
たとえばレスポンダが自身を描画する場合は SFYWidget クラスを起点にします。
より具体的な属性を特定できる場合は SFYContainer クラス、 SFZWindow クラス、SFZDialog クラスなどを起点にできます。
以下の抽象レスポンダはカスタマイズされたユーザー定義レスポンダを作成するための起点となります。
表 9.4. 抽象レスポンダの種類
| クラス名 | 解説 |
|---|---|
| SFYResponder | レスポンダを表す抽象クラスです。 |
| SFYWidget | ウィジェットを表す抽象クラスです。 |
| SFYContainer | コンテナを表す抽象クラスです。 |
| SFZWindow | ウィンドウを表す抽象クラスです。 |
| SFZDialog | ダイアログを表す抽象クラスです。 |
| SFYMenu | メニューを表す抽象クラスです。 |
| SFYControl | コントロールを表す抽象クラスです。 |
| SFYBandControl | 帯コントロールを表す抽象クラスです。 |
| SFYLabelControl | ラベルコントロールを表す抽象クラスです。 |
| SFYBoxControl | ボックスコントロールを表す抽象クラスです。 |
| SFYButtonControl | ボタンコントロールを表す抽象クラスです。 |
| SFYCheckboxControl | チェックボックスコントロールを表す抽象クラスです。 |
| SFYRadiobuttonControl | ラジオボタンコントロールを表す抽象クラスです。 |
| SFYScrollBarControl | スクロールバーコントロールを表す抽象クラスです。 |
| SFYTabControl | タブコントロールを表す抽象クラスです。 |
![]() |
SophiaFramework UNIVERSE 標準提供レスポンダ |
|---|---|
通常、SophiaFramework UNIVERSE 標準提供レスポンダを起点に使える場合がほとんどです。 SFYResponder クラスを直接起点にしてユーザー定義レスポンダを作成することは滅多に発生しません。 | |
![]() |
重要 |
|---|---|
|
すべてのレスポンダにおいて、SFYResponder::SetParent 関数、SFYResponder::SetState 関数、SFYResponder::SetRealBound 関数の呼び出しは必須です。 その他の関数は必要に応じて呼び出すことも省略することもできます。 | |
SFYResponder クラスには、各種レスポンダに共通する要素や機能が実装されています。
SFYResponder クラスはユーザー定義レスポンダを実装するときの最初の起点となります。
以下にユーザー定義レスポンダを作成するときに最低限必要なコードを示します。
例 9.29. 宣言
SFMTYPEDEFRESPONDER(USRResponder)
class USRResponder : public SFYResponder {
SFMSEALRESPONDER(USRResponder)
SFMRESPONDERINSTANTIATEONE(USRResponder, SFYResponder)
public:
// レスポンダのタイプを定義する
// 小文字と記号のみからなるタイプは予約されているので使えない
enum CodeEnum {
CODE_TYPE = four_char_code('U', 'R', 'S', 'P')
};
SFMTYPEDEFTYPE(CodeEnum)
public:
static USRResponderSmp NewInstance(SFCErrorPtr exception = null);
protected:
explicit USRResponder(Void) static_throws;
virtual ~USRResponder(Void);
};
例 9.30. 実装
// コンストラクタ USRResponder::USRResponder(Void) static_throws { if (static_try()) { // レスポンダのタイプを設定する SetType(CODE_TYPE); // 初期化処理を記述する } } // デストラクタ USRResponder::~USRResponder(Void) { // 終了処理を記述する } // スマートポインタで管理されるインスタンスを生成する関数 USRResponderSmp USRResponder::NewInstance(SFCErrorPtr exception) { return static_pointer_cast<USRResponder>(Factory(::new USRResponder, exception)); }
![]() |
コンストラクタやデストラクタ内の return 文 |
|---|---|
|
通常、C++ではコンストラクタやデストラクタでは return 文を記述しません。 GCC(将来的にサポート予定)を使う場合、コンストラクタやデストラクタ内で return 文を記述すると、 特定の継承関係になっているときにコンパイラがフリーズするバグが確認されています。 | |
|
Copyright(c) 2002 - 2009 Sophia Cradle Incorporated All Rights Reserved. |
![]() ![]() ![]()
|