タイトル付きのウィンドウを作成する
SFRTitleWindow クラスを使って、"my window"のタイトルがついたウィンドウを作成します。
SFMTYPEDEFCLASS(MyWindow)
class MyWindow : public SFRTitleWindow {
SFMSEALCOPY(MyWindow)
public:
MyWindow(Void) static_throws;
virtual ~MyWindow(Void);
// 描画ハンドラを宣言する
HANDLER_DECLARE_VOIDRENDER(OnRenderContent)
};
// コンストラクタ
MyWindow::MyWindow(Void) : SFRTitleWindow(SFRApplication::GetInstance(),
SFXRectangle(20, 20, 200, 250), &qout;my window&qout;)
{
// 描画ハンドラを登録する
RegisterHandler(SREVT_RESPONDER_RENDER,
SRP16_RENDER_CONTENT,
HANDLER_BEFORE,
HANDLER_FUNCTION(OnRenderContent));
return;
}
// 描画ハンドラ
// 第 1 引数 : 所属クラス、第 2 引数 : ハンドラ名、
// 第 3 引数 : SFXGraphics インスタンス
HANDLER_IMPLEMENT_VOIDRENDER(MyWindow, OnRenderContent, graphics)
{
// SFXGraphics インスタンスを使って描画する
// ウィンドウの中を紫色に設定する
// GetContentWorld() はウィンドウの中の
// 描画領域を表す長方形 ( SFXRectangle ) を返す
// SFXRGBColor(0xD8, 0xD8, 0xFF, 0x00) : 左から R, G, B, アルファ値
graphics->FillRectangle(GetContentWorld(),
SFXRGBColor(0xD8, 0xD8, 0xFF, 0x00));
return;
}
// タイトル ウィンドウを作成する
MyWindowPtr window;
window = new MyWindow();
フレーム付きのウィンドウを作成する
SFRFrameWindow クラスを使って、フレーム付きのウィンドウを作成します。
SFMTYPEDEFCLASS(MyWindow)
class MyWindow : public SFRFrameWindow {
SFMSEALCOPY(MyWindow)
public:
MyWindow(Void) static_throws;
virtual ~MyWindow(Void);
// 描画ハンドラを宣言する
HANDLER_DECLARE_VOIDRENDER(OnRenderContent)
};
// コンストラクタ
MyWindow::MyWindow(Void) : SFRFrameWindow(SFRApplication::GetInstance(),
SFXRectangle(20, 20, 200, 250))
{
// 描画ハンドラを登録する
RegisterHandler(SREVT_RESPONDER_RENDER,
SRP16_RENDER_CONTENT,
HANDLER_BEFORE,
HANDLER_FUNCTION(OnRenderContent));
return;
}
// 描画ハンドラ
// 第 1 引数 : 所属クラス、第 2 引数 : ハンドラ名、
// 第 3 引数 : SFXGraphics インスタンス
HANDLER_IMPLEMENT_VOIDRENDER(MyWindow, OnRenderContent, graphics)
{
// SFXGraphics インスタンスを使って描画する
// ウィンドウの中を紫色に設定する
// GetContentWorld() はウィンドウの中の
// 描画領域を表す長方形 ( SFXRectangle ) を返す
// SFXRGBColor(0xD8, 0xD8, 0xFF, 0x00) : 左から R, G, B, アルファ値
graphics->FillRectangle(GetContentWorld(),
SFXRGBColor(0xD8, 0xD8, 0xFF, 0x00));
return;
}
// フレーム ウィンドウを作成する
MyWindowPtr window;
window = new MyWindow();
プレーンウィンドウを作成する
SFRPlainWindow クラスを使って、プレーンウィンドウを作成します。
SFMTYPEDEFCLASS(MyWindow)
class MyWindow : public SFRPlainWindow {
SFMSEALCOPY(MyWindow)
public:
MyWindow(Void) static_throws;
virtual ~MyWindow(Void);
// 描画ハンドラを宣言する
HANDLER_DECLARE_VOIDRENDER(OnRenderContent)
};
// コンストラクタ
MyWindow::MyWindow(Void) : SFRPlainWindow(SFRApplication::GetInstance(),
SFXRectangle(20, 20, 200, 250))
{
// 描画ハンドラを登録する
RegisterHandler(SREVT_RESPONDER_RENDER,
SRP16_RENDER_CONTENT,
HANDLER_BEFORE,
HANDLER_FUNCTION(OnRenderContent));
return;
}
// 描画ハンドラ
// 第 1 引数 : 所属クラス、第 2 引数 : ハンドラ名、
// 第 3 引数 : SFXGraphics インスタンス
HANDLER_IMPLEMENT_VOIDRENDER(MyWindow, OnRenderContent, graphics)
{
// SFXGraphics インスタンスを使って描画する
// ウィンドウの中を紫色に設定する
// GetContentWorld() はウィンドウの中の
// 描画領域を表す長方形 ( SFXRectangle ) を返す
// SFXRGBColor(0xD8, 0xD8, 0xFF, 0x00) : 左から R, G, B, アルファ値
graphics->FillRectangle(GetContentWorld(),
SFXRGBColor(0xD8, 0xD8, 0xFF, 0x00));
return;
}
// プレーン ウィンドウを作成する
MyWindowPtr window;
window = new MyWindow();
ウィンドウ上に画像を描画するには
ウィンドウ上に画像を描画するには、ウィンドウに描画ハンドラを登録し、
描画ハンドラ内のグラフィック・オブジェクトを使って描画します。
// ウィンドウの定義
class MyWindow : public SFRTitleWindow {
...
MyWindow(Void);
// 描画ハンドラの宣言
HANDLER_DECLARE_VOIDRENDER(MyWindow, OnRenderContent)
};
// 描画ハンドラの定義
HANDLER_IMPLEMENT_VOIDRENDER(MyWindow, OnRenderContent, graphics)
{
// SFBBitmapSmp 型の bitmap に画像が格納されているとする
// SFXRectangle(0, 0, 100, 100) に画像を描画する
graphics->BitBlt(SFXRectangle(0, 0, 100, 100), bitmap);
return;
}
// コンストラクタ
MyWindow::MyWindow(Void) : ...
{
// ハンドラを登録する(エラー処理は省略)
RegisterHandler(SREVT_RESPONDER_RENDER, SRP16_RENDER_CONTENT,
HANDLER_BEFORE, HANDLER_FUNCTION(OnRenderContent));
return;
}
graphics インスタンスについては グラフィックインターフェースの取得 を参照