![]() ![]() ![]()
|
BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework UNIVERSE 5.0 |
Onlybootup アプリは、起動する以外何も行わないアプリです。このアプリのコードを使って、SophiaFramework UNIVERSE アプリの起動時の処理について解説します。
例 9.5. Onlybootup アプリ : .cpp ファイル ( ブート ローダとファクトリ関数の実装、ハンドラの実装と登録 )
// // Onlybootup.cpp // // This source code was automatically // generated by SophiaFramework UNIVERSE 5.0. // #include "Onlybootup.hpp" // ブート ローダ SFCApplet::FactorySPP SFCApplet::Boot(AEECLSID id, SFXAnsiStringPtr license) { *license = "heap://"; return (id == AEECLSID_ONLYBOOTUP) ? (&Onlybootup::Factory) : (null); } // ファクトリ関数 SFCInvokerPtr Onlybootup::Factory(Void) { return ::new Onlybootup; } // コンストラクタ Onlybootup::Onlybootup(Void) static_throws { return; } // デストラクタ Onlybootup::~Onlybootup(Void) { return; }
SFRApplication クラスを継承する Onlybootup アプリ クラスが、このアプリの処理の中心となります。
Onlybootup のアプリの起動は、ブート ローダ と呼ばれる SFCApplet::Boot 関数の呼び出しから始まります。
SFCApplet::Boot 関数では、アプリの ClassID に対応するライセンスコードを設定し、 Onlybootup アプリ クラスのインスタンスを生成するための Onlybootup::Factory 関数のアドレスを返します
次に Onlybootup::Factory 関数が実行され、 Onlybootup アプリ クラスの Onlybootup::Onlybootup コンストラクタによって Onlybootup アプリ クラスのインスタンスを一度だけ生成します。 その後、SFEVT_APP_START イベントが Onlybootup アプリに送信され、Onlybootup アプリの起動は完了します。 なお、Onlybootup アプリ クラスのインスタンスはアプリ終了時に自動的に破棄されます。
※ SophiaFramework UNIVERSE では複数の ClassID に個別のアプリ クラスをバインドできます。 ClassID を切り替えて複数のアプリを起動するコードを以下に示します。
例 9.6. 複数アプリの起動 : .hpp ファイル ( クラスの定義 )
// // Twin.hpp // // This source code was automatically // generated by SophiaFramework UNIVERSE 5.0. // #ifndef __TWIN_HPP #define __TWIN_HPP #include <SophiaFramework.hpp> #include "TwinA.bid" #include "TwinB.bid" SFMTYPEDEFCLASS(TwinA) class TwinA : public SFRApplication { SFMSEALCOPY(TwinA) public: static SFCInvokerPtr Factory(Void); private: TwinA(Void) static_throws; virtual ~TwinA(Void); }; SFMTYPEDEFCLASS(TwinB) class TwinB : public SFRApplication { SFMSEALCOPY(TwinB) public: static SFCInvokerPtr Factory(Void); private: TwinB(Void) static_throws; virtual ~TwinB(Void); }; #endif // __TWIN_HPP //
例 9.7. 複数アプリの起動 : .cpp ファイル ( ブート ローダとファクトリ関数の実装、ハンドラの実装と登録 )
// // Twin.cpp // // This source code was automatically // generated by SophiaFramework UNIVERSE 5.0. // #include "Twin.hpp" // ブート ローダ SFCApplet::FactorySPP SFCApplet::Boot(AEECLSID id, SFXAnsiStringPtr license) { SFCApplet::FactorySPP result(null); switch (id) { case AEECLSID_TWINA: result = &TwinA::Factory; *license = "heap://" "TIXDRQXNU5WHU8 ・・・・・・・・・ ・・・・・・・・・ LUGEW3U98TLDR8"; break; case AEECLSID_TWINB: result = &TwinB::Factory; *license = "heap://" "DHDV5CR1S4XASC ・・・・・・・・・ ・・・・・・・・・ TQS6UHVFVEVLU3R"; break; } return result; } // ファクトリ関数 SFCInvokerPtr TwinA::Factory(Void) { return ::new TwinA; } // コンストラクタ TwinA::TwinA(Void) static_throws { return; } // デストラクタ TwinA::~TwinA(Void) { return; } // ファクトリ関数 SFCInvokerPtr TwinB::Factory(Void) { return ::new TwinB; } // コンストラクタ TwinB::TwinB(Void) static_throws { return; } // デストラクタ TwinB::~TwinB(Void) { return; }
|
Copyright (C) 2002 - 2008 Sophia Cradle Incorporated All Rights Reserved. |
![]() ![]() ![]()
|