![]() ![]() ![]()
|
BREW C++ ライブラリ & GUI フレームワーク : SophiaFramework 3.0 |
SophiaFramework AppWizard が生成したコードを元に、アプリの起動から終了までを解説します。
SophiaFramework のアプリは SFCApplet::Boot() 関数と、Factory() 関数を実装する必要があります。
// // HelloWorld.cpp // #include "HelloWorld.hpp" // ブート ローダ SFCApplet::FactorySPP SFCApplet::Boot(AEECLSID id, SFXAnsiStringPtr license) { *license = "heap://" "TIXDRQXNU5WHU8Y3Z9WOHWQR6Z3VPSDHDV5CR1S4XASPWLUHWAS7Z5Z2TGS3XMSAT3UPUQTLTARCYPSF" "UEJZ6ROSJWGUQSEYKR6V2U4VESMTQLHKZ6X7Y2VKXHWIX3XBU0Z7VHWHXIZBSGT5SPU3XLX0Z1Y4R3TC" "U6WGT9WHWIVNYHYCUCR9T3SMTEWPRNVAX1Y4VPW2YCY9YQV5R7Z9UIVHT6SDUPU2SIW6VCRCWBR2S4WQ" "UPYFWCYGT4VIT1WHXGYPTQSFYPWNV3ULRNWFW7RBRFVKUKS2YQSQYHW1TPUPXBZ6UEY2WOYKR7S3TAU4" "TQS6UHVFVEVLU3R5SDSKW7RPTNTPVQU2T4R8Z4VLUGEW3U98TLDR8/"; return (id == AEECLSID_HELLOWORLD) ? (&HelloWorld::Factory) : (null); } // ファクトリ関数 SFCInvokerPtr HelloWorld::Factory(Void) { return ::new HelloWorld; }
GUI フレームワークを使うので、HelloWorld クラスは SFRApplication クラスを継承します。
// // HelloWorld.hpp // #ifndef __HELLOWORLD_HPP #define __HELLOWORLD_HPP #include <SophiaFramework.hpp> #include "HelloWorld.bid" // // HelloWorld アプリケーション クラス // SFMTYPEDEFCLASS(HelloWorld) class HelloWorld : public SFRApplication { SFMSEALCOPY(HelloWorld) public: static SFCInvokerPtr Factory(Void); private: HelloWorld(Void) static_throws; virtual ~HelloWorld(Void); HANDLER_DECLARE_VOIDRENDER(HelloWorld, OnRenderContent) HANDLER_DECLARE_BOOLEVENT(HelloWorld, OnKey) }; #endif // __HELLOWORLD_HPP //
![]() |
注意 |
|---|---|
現段階で重要でない部分 (エラー処理など) は灰色で表示しています。 | |
イベントハンドラは、アプリ開始や、キー押下などのイベントが発生した時に然るべき処理をする関数です。
描画ハンドラには描画時の処理を記述します。graphics->DrawText() 関数で画面に"Hello World"を表示します。
// 描画ハンドラ
HANDLER_IMPLEMENT_VOIDRENDER(HelloWorld, OnRenderContent, graphics)
{
graphics->DrawText("Hello World", GetContentWorld());
return;
}
キーハンドラにはキー押下時の処理を記述します。
// キー ハンドラ HANDLER_IMPLEMENT_BOOLEVENT(HelloWorld, OnKey, event) { switch (event.GetP16()) { case AVK_SELECT: // セレクト キーが押されたら Terminate(); // アプリを終了する。 return true; } return false; }
イベントハンドラを RegisterHandler 関数で登録します。引数として、イベントコード、イベントコードに付随するデータ、関数を呼び出すタイミング、関数ポインタを渡します。
// コンストラクタ HelloWorld::HelloWorld(Void) static_throws { if (static_try()) { static_throw( RegisterHandler(SREVT_RESPONDER_RENDER, SRP16_RENDER_CONTENT, HANDLER_BEFORE, HANDLER_FUNCTION(OnRenderContent)); } if (static_try()) { static_throw( RegisterHandler(SFEVT_KEY, HANDLER_AFTER, HANDLER_FUNCTION(OnKey)); } return; } // デストラクタ HelloWorld::~HelloWorld(Void) { return; }
|
Copyright (C) 2002 - 2009 Sophia Cradle, Inc. All Rights Reserved. |
![]() ![]() ![]()
|