![]() ![]() ![]()
|
BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework UNIVERSE 5.0 |
GUI フレームワークを使わない SFC アプリでは、アプリ クラスは SFCApplication を継承します。
![]() |
SFR / SFY アプリの場合 |
|---|---|
|
GUI フレームワークを使う SFR アプリでは SFRApplication を継承します。 GUI フレームワークを使う SFY アプリでは SFYApplication を継承します。 | |
SFC アプリでは、ハンドラ関数の宣言に HANDLER_DECLARE を使いません。 例えば、キー ハンドラ OnKey 関数は、通常の関数と同じように宣言します。
例 5.2. HelloWorld アプリ クラスの定義
//// HelloWorld.hpp// #ifndef __HELLOWORLD_HPP #define __HELLOWORLD_HPP #include <SophiaFramework.hpp> #include "HelloWorld.bid" // // HelloWorld アプリ クラス // SFMTYPEDEFCLASS(HelloWorld) class HelloWorld : public SFCApplication { SFMSEALCOPY(HelloWorld) public: static SFCInvokerPtr Factory(Void); private: HelloWorld(Void); virtual ~HelloWorld(Void); virtual Bool HandleEvent(SFXEventConstRef event); virtual Bool HandleRender(SFXEventConstRef event); Bool OnKey(UInt16 key); }; #endif // __HELLOWORLD_HPP //
HandleEvent 関数は SFC アプリのイベント ハンドラです。 HandleEvent 関数は、受信したイベントに対応するハンドラ関数を呼び出します。
イベントは HandleEvent 関数の引数として渡され、イベントの type に応じて、ハンドラ関数が呼び出されます。 キー イベントの場合、キー ハンドラ OnKey 関数が呼び出されます。
HandleRender 関数は SFC アプリの描画イベント ハンドラです。 HandleRender 関数は、描画イベント時の描画処理を行います。
描画処理はここで行う必要があります。
例 5.3. SophiaFramework AppWizard が自動生成するイベント ハンドラ HandleEvent 関数
// イベント ハンドラ Bool HelloWorld::HandleEvent(SFXEventConstRef event) { // ここに各種イベントの分岐を記述します。 switch (event.GetType()) { case SFEVT_KEY: // キー イベントのとき result = OnKey(event.GetP16()); } return false; }
例 5.4. SophiaFramework AppWizard が自動生成する描画ハンドラ HandleRender 関数
// 描画ハンドラ Bool HelloWorld::HandleRender(SFXEventConstRef event) { // ここに描画時の処理を記述します。 SFXGraphicsPtr graphics; if (IsRenderable()) { // SFXGraphics インスタンスの取得をします。 graphics = SFXGraphics::GetInstance(); if (graphics != null) { // 画面を白色で塗りつぶします。 // SFXGraphics::GetDeviceRectangle() で画面全体 ( 長方形 ) を取得します。 // SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00) は白色を表します( 左から R、G、B、アルファ値 )。 graphics->ClearRectangle(graphics->GetDeviceRectangle(), SFXRGBColor(0xFF, 0xFF, 0xFF, 0x00)); // 画面に "Hello World" 文字列を描画します。 graphics->DrawSingleText("Hello World", graphics->GetDeviceRectangle(), SFXRGBColor(0x00, 0x00, 0x00, 0x00)); // GUI フレームワークを使わないアプリでは必ず画面を更新します。 graphics->Update(); return true; } } return false; }
例 5.5. SophiaFramework AppWizard が自動生成するキー ハンドラ OnKey 関数
Bool HelloWorld::OnKey(UInt16 key)
{
// ここにキーが押されたときの処理を記述します。
// キーイベントの処理
switch (key) {
case AVK_SELECT: // セレクトキーが押されたとき
Terminate(); // アプリを終了します。
return true;
}
return false;
}
SFC アプリではイベント ハンドラを独自に実装するので、コンストラクタではハンドラ関数を登録しません。
|
Copyright (C) 2002 - 2008 Sophia Cradle Incorporated All Rights Reserved. |
![]() ![]() ![]()
|