![]() ![]() ![]()
|
BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework 4.1 |
SFRWindow を継承するウィンドウは 3 種類あります。
表 10.3. ウィンドウの種類
| クラス名 | 解説 |
|---|---|
| SFRPlainWindow | タイトルやフレームのないプレーンなウィンドウを表すレスポンダです。 |
| SFRFrameWindow | フレーム付きのウィンドウを表すレスポンダです。 |
| SFRTitleWindow | タイトル付きのウィンドウを表すレスポンダです。 |
通常、ウィンドウはいずれかのウィンドウを継承して使います。
関連情報: GUI フレームワークを使う開発 : ウィンドウ
SFRPlainWindow を継承する MyWindow クラスのインスタンス(プレーン ウィンドウ)を作成します。
例 10.11. プレーン ウィンドウの定義・実装・作成 1
// 座標 : ( 20, 20 ) 、幅 : 200、高さ : 250 のプレーン ウィンドウ SFMTYPEDEFCLASS(MyWindow) class MyWindow : public SFRPlainWindow { SFMSEALCOPY(MyWindow) public: MyWindow(Void); virtual ~MyWindow(Void); }; // コンストラクタ // SFRPlainWindow の第 1 引数 : アプリ クラスのポインター、第 2 引数 : ウィンドウの位置と大きさ MyWindow::MyWindow(Void) : SFRPlainWindow(SFRApplication::GetInstance(), SFXRectangle(20, 20, 200, 250)) { return; } // プレーン ウィンドウの作成 MyWindowPtr window; window = new MyWindow();
![]() |
注意 |
|---|---|
タイトルやフレームのないプレーンなウィンドウのため、見た目には作成されていないように見えます。 | |
SFRPlainWindow を継承する MyWindow クラスのインスタンス(プレーン ウィンドウ)に、 SFXGraphics インスタンスを使って "Hello Window" を描画します。
例 10.12. プレーン ウィンドウの定義・実装・作成 2
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(0xCE, 0xFF, 0xFF, 0x00) : 水色
graphics->FillRectangle(GetContentWorld(),
SFXRGBColor(0xCE, 0xFF, 0xFF, 0x00));
// "Hello Window" 文字列表示
// SFXRGBColor(0x00, 0x00, 0x00, 0x00) : 黒色
graphics->DrawText("Hello Window",
GetContentWorld(),
SFXRGBColor(0x00, 0x00, 0x00, 0x00));
return;
}
// プレーン ウィンドウの作成
MyWindowPtr window;
window = new MyWindow();
SFRFrameWindow を継承する MyWindow クラスのインスタンス(フレーム ウィンドウ)を作成します。
例 10.13. フレーム ウィンドウの定義・実装・作成 1
// 座標 : ( 20, 20 ) 、幅 : 200、高さ : 250 のフレーム ウィンドウ SFMTYPEDEFCLASS(MyWindow) class MyWindow : public SFRFrameWindow { SFMSEALCOPY(MyWindow) public: MyWindow(Void); virtual ~MyWindow(Void); }; // コンストラクタ // SFRFrameWindow の第 1 引数 : アプリ クラスのポインター、第 2 引数 : ウィンドウの位置と大きさ MyWindow::MyWindow(Void) : SFRFrameWindow(SFRApplication::GetInstance(), SFXRectangle(20, 20, 200, 250)) { return; } // フレーム ウィンドウの作成 MyWindowPtr window; window = new MyWindow();
SFRFrameWindow を継承する MyWindow クラスのインスタンス(フレーム ウィンドウ)に、 SFXGraphics インスタンスを使って "Hello Window" 描画します。
例 10.14. フレーム ウィンドウの定義・実装・作成 2
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(0xCE, 0xFF, 0xFF, 0x00) : 水色
graphics->FillRectangle(GetContentWorld(),
SFXRGBColor(0xCE, 0xFF, 0xFF, 0x00));
// "Hello Window" 文字列表示
// SFXRGBColor(0x00, 0x00, 0x00, 0x00) : 黒色
graphics->DrawText("Hello Window",
GetContentWorld(),
SFXRGBColor(0x00, 0x00, 0x00, 0x00));
return;
}
// フレーム ウィンドウの作成
MyWindowPtr window;
window = new MyWindow();
SFRTitleWindow を継承する MyWindow クラスを作成します。
SFRTitleWindow を継承する MyWindow クラスのインスタンス(タイトル ウィンドウ)を作成します。
例 10.15. タイトル ウィンドウの定義・実装・作成 1
// 座標 : ( 20, 20 ) 、幅 : 200、高さ : 250、タイトル : "my window" のタイトル ウィンドウ SFMTYPEDEFCLASS(MyWindow) class MyWindow : public SFRTitleWindow { SFMSEALCOPY(MyWindow) public: MyWindow(Void); virtual ~MyWindow(Void); }; // コンストラクタ // SFRTitleWindow の第 1 引数 : アプリ クラスのポインター、第 2 引数 : ウィンドウの位置と大きさ、第 3 引数 : ウィンドウのタイトル MyWindow::MyWindow(Void) : SFRTitleWindow(SFRApplication::GetInstance(), SFXRectangle(20, 20, 200, 250), "my window") { return; } // タイトル ウィンドウの作成 MyWindowPtr window; window = new MyWindow();
SFRTitleWindow を継承する MyWindow クラスのインスタンス(タイトル ウィンドウ)に、 SFXGraphics インスタンスを使って "Hello Window" 描画します。
例 10.16. タイトル ウィンドウの定義・実装・作成 2
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), "my window")
{
// ハンドラの登録
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(0xCE, 0xFF, 0xFF, 0x00) : 水色
graphics->FillRectangle(GetContentWorld(),
SFXRGBColor(0xCE, 0xFF, 0xFF, 0x00));
// "Hello Window" 文字列表示
// SFXRGBColor(0x00, 0x00, 0x00, 0x00) : 黒色
graphics->DrawText("Hello Window",
GetContentWorld(),
SFXRGBColor(0x00, 0x00, 0x00, 0x00));
return;
}
// タイトル ウィンドウの作成
MyWindowPtr window;
window = new MyWindow();
GetContentWorld 関数で取得できる 描画領域 は、左上端が ( 0 , 0 ) となります。
ウィンドウはいくつでも作成できます。ウィンドウが複数存在する場合、イベント処理はイベントの種類によって異なります。例えば、キー イベントは最前面のウィンドウ( のフォーカスの当たったコントロール )に送信されます。サスペンド、レジューム イベントはすべてのウィンドウに送信されます。
ウィンドウを最前面にするには、Select 関数を使います。
ウィンドウは、選択できないように無効にしたり、非表示にできます。ウィンドウを無効にすると、そのウィンドウ内のすべてのコントロールも無効になります。
表 10.4. レスポンダの有効/無効、表示/非表示に関する関数
| 関数名 | 解説 |
|---|---|
| SetStatusEnable | レスポンダの応答可能 / 不可能フラグを設定します。( 引数 true : 有効 、false : 無効 ) |
| GetStatusEnable | レスポンダの応答可能 / 不可能フラグを取得します。 |
| SetStatusVisible | レスポンダの可視 / 不可視フラグを設定します。( 引数 true : 表示 、false : 非表示 ) |
| GetStatusVisible | レスポンダの可視 / 不可視フラグを取得します。 |
ウィンドウを無効にする方法
// _window は SFRWindowPtr 型
_window->SetStatusEnable(false);
|
Copyright (C) 2002 - 2008 Sophia Cradle, Inc. All Rights Reserved. |
![]() ![]() ![]()
|