![]() ![]() ![]()
|
SophiaFramework 2.2 |
ここでは SophiaFramework を使用したアプレットの起動の詳細を解説します。
SophiaFramework を用いてアプレットを作る場合、最低限必要なコードは 以下のようになります。
#include <SophiaFramework.hpp>
SFMTYPEDEFCLASS(Demo)
class Demo : public SFRApplication {
public:
static inline SFCInvokerPtr Constructor(Void)
{
return(new Demo());
}
private:
inline Demo(Void)
{
return;
}
virtual inline ~Demo(Void)
{
return;
}
};
SFCInvokerSPP SFCApplet::Boot(AEECLSID id)
{
return((id == AEECLSID_DEMO) ? Demo::Constructor : NULL);
}
SFRApplication クラスを継承した Demo クラスがアプリケーションの 中心部になります。このクラスは起動時に自動的に一度だけ生成されます。 クラスを生成させるには、Demo クラスのコンストラクタを呼ぶために 静的メンバ関数を定義しなければいけません。
SFCApplet::Boot はアプレットのブート ローダであり、アプレットの 起動時に一番初めに実行されます。この関数は SophiaFramework を使用する開発者が 実装しなければなりません。この関数で行わなければならない処理は SFCInvokerSPP 型の関数ポインタを返すことです。この関数ポインタは 実際に起動されるアプリケーション クラスを作成するための関数への ポインタです。
SophiaFramework を使用したアプレットの起動順序は次のような順序と なります。まず、一番初めに SFCApplet::Boot 関数へ処理が来ます。 次に、SFCApplet::Boot で返した関数が起動されます。その関数は つまり Demo::Constructor です。Demo::Constructor 内では Demo クラスを生成します。
このような構造を取ることによって SophiaFramework では 複数クラス ID を切り替えてクラス ID ごとに起動するアプリケーション クラスを変更 できるようになっています。複数のアプリケーションを切り替えるには 以下のようなコードを記述します。
#include <SophiaFramework.hpp>
SFMTYPEDEFCLASS(Demo1)
class Demo1 : public SFRApplication {
public:
static inline SFCInvokerPtr Constructor(Void)
{
return(new Demo1());
}
private:
inline Demo1(Void)
{
return;
}
virtual inline ~Demo1(Void)
{
return;
}
};
SFMTYPEDEFCLASS(Demo2)
class Demo2 : public SFRApplication {
public:
static inline SFCInvokerPtr Constructor(Void)
{
return(new Demo2());
}
private:
inline Demo2(Void)
{
return;
}
virtual inline ~Demo2(Void)
{
return;
}
};
SFCInvokerSPP SFCApplet::Boot(AEECLSID id)
{
SFCInvokerSPP result = NULL;
switch (id) {
case AEECLSID_DEMO1:
result = Demo1::Constructor;
break;
case AEECLSID_DEMO2:
result = Demo2::Constructor;
break;
}
return(result);
}
| Copyright(C) 2003-2004 Sophia Cradle Inc., All Rights Reserved. |
![]() ![]() ![]()
|