![]() ![]() ![]()
|
SophiaFramework 2.2 |
ウィンドウはレスポンダの一種であり、 パソコンでいうところのウィンドウと同じものです。
ウィンドウを生成するには生成したいウィンドウのインスタンスを new 演算子で生成します。
以下にタイトル付きのウィンドウを生成するサンプル コードを すべて示します。
SFMTYPEDEFCLASS(Demo)
class Demo : public SFRApplication {
public:
static inline SFCInvokerPtr Constructor(Void)
{
return(new Demo());
}
private:
inline Demo(Void)
{
SFRWindowPtr window;
if (Exception() == NO_ERROR) {
window = new SFRTitleWindow(this, SFURect(10, 10, 100, 100), "Hello");
if (window != NULL) {
if (Exception(window->Exception()) != NO_ERROR) {
delete window;
}
}
else {
Exception(ENOMEMORY);
}
}
return;
}
virtual inline ~Demo(Void)
{
return;
}
};
SFCInvokerSPP SFCApplet::Boot(AEECLSID id)
{
SFCInvokerSPP result = NULL;
switch (id) {
case AEECLSID_Demo:
result = Demo::Constructor;
break;
}
return(result);
}
ウィンドウでイベントを受け取るにはイベント ハンドラを 登録します。ウィンドウには標準でいくつかのハンドラが 登録されています。ウィンドウでイベントを処理する方法は アプリケーションの方法とほぼ同じですので、具体的な 方法についてはアプリケーションを参照してください。
ウィンドウのベース領域の再描画イベントを受け取るには タイプが SREVT_RESPONDER_RENDER で、第一パラメータが SRP16_RENDER_BASE の イベント用のハンドラを登録してください。また、ウィンドウの コンテント領域の再描画イベントを受け取るには SREVT_RESPONDER_RENDER と SRP16_RENDER_CONTENT の組み合わせの イベント用のハンドラを登録してください。
ウィンドウを破棄するには、SREVT_RESPONDER_TERMINATE イベントを 自分に対して送信してください。 詳しくは、レスポンダのコンポーネントの破棄を参照してください。
ウィンドウを明示的に破棄することもできますが、 アプレット終了時に、破棄されていないウィンドウは自動的に破棄されます。
ウィンドウは標準では3種類定義されています。 SFRPlainWindow と SFRFrameWindow と SFRTitleWindow です。 それぞれのウィンドウを継承して独自の種類のウィンドウを作ることも、 そのまま継承せずに使用することもできます。 用意されているウィンドウとまったく異なるウィンドウを定義する場合は、 SFRWindow から継承します。
| Copyright(C) 2003-2004 Sophia Cradle Inc., All Rights Reserved. |
![]() ![]() ![]()
|