前のページ次のページ上に戻るホーム SophiaFramework 2.2

10.5. イベントの種類と詳細

ここでは SophiaFramework で使用できるイベントの種類やパラメータについて 解説します。

SophiaFramework では BREW 標準のイベントと SophiaFramework で拡張された イベントを使用できます。また、ユーザー定義のイベントを使用することも可能です。 BREW 標準イベントや拡張イベントのタイプに相当する AEEEvent 型の値は SophiaFramework では SFCEventEnum として定義されています。 また、EVT_KEY や EVT_APP_START などのイベント名は SFEVT_KEY や SFEVT_APP_START などのように置き換えられています。また、レスポンダに関係するイベント タイプは SREVT_ で始まる規則になっています。イベントの第一パラメータである UInt16 値は 型の置き換えや名称の置き換えはありません。BREW 標準のものを使用してください。 レスポンダに関係する第一パラメータは SRP16_ で始まる規則になっています。 また第二パラメータも型の置き換えや名称変更はありません。

BREW 標準のイベントに関する詳細は BREW のリファレンスを参照してください。ここでは レスポンダ モデルで使用されるイベントについて解説します。(以下の表中のタイプは SFCEventEnum 型のイベントタイプ、P16 は UInt16 型の第一パラメータ、P32 は UInt32 型の第二パラメータを表します。)

タイプ:SREVT_RESPONDER_RENDER
P16:SRP16_RENDER_INVOKE 定数
P32:Bool 型
レンダラを起動してレスポンダを再描画します。 P32 はスケジューリングされていなくても再描画させるとき TRUE を渡します。 開発者はこのイベントを処理してはいけません。 また、開発者がこのイベントを送信することは推奨しません。
タイプ:SREVT_RESPONDER_RENDER
P16:SRP16_RENDER_BASE 定数
P32:SFUGraphicsPtr
ベース領域の再描画時に起動されます。 P32 はグラフィックス オブジェクトへのポインタです。 このオブジェクトを使用して描画を行ってください。 開発者はこのイベントを送信してはいけません。
タイプ:SREVT_RESPONDER_RENDER
P16:SRP16_RENDER_CONTENT 定数
P32:SFUGraphicsPtr
コンテント領域の再描画時に起動されます。 P32 はグラフィックス オブジェクトへのポインタです。 このオブジェクトを使用して描画を行ってください。 開発者はこのイベントを送信してはいけません。
タイプ:SREVT_RESPONDER_TERMINATE
P16:SRP16_TERMINATE_INVOKE 定数
P32:Bool 型
オブジェクトを破棄するときに使用します。 P32 は強制破棄のとき TRUE となります。 開発者はこのイベントを処理してはいけません。
タイプ:SREVT_RESPONDER_TERMINATE
P16:SRP16_TERMINATE_TRY 定数
P32:Bool 型
オブジェクトが破棄される前に起動されます。 P32 は強制破棄か否かを示す引数です。このイベントを 処理して、TRUE を返すとオブジェクトの破棄が中止されます。 破棄を続行するときは FALSE を返します。 このイベントは、破棄されるオブジェクトの中に含まれる 全ての子階層のオブジェクトにも送信され、そのうち 一つでの TRUE を返すと、オブジェクトの破棄は中断 されます。 開発者はこのイベントを送信してはいけません。
タイプ:SREVT_DIALOG
P16:UInt16 型
P32:SFRDialogPtr
ダイアログでキーが押されたりイベントが 発生したときに起動されます。 P16 パラメータにはダイアログが閉じられた理由が セットされています。 SRP16_OK は OK ボタンが押された場合に、SRP16_ESCAPE は クリア キーが押された場合にセットされます。 P32 にはダイアログ オブジェクトへのポインタがセットされています。
タイプ:SREVT_MENU
P16:UInt16 型
P32:SFRMenuPtr
メニューでキーが押されたりイベントが 発生したときに起動されます。 P16 にはメニューが閉じられた理由もしくは メニューが選択された場合はそのインデックスが セットされています。 SRP16_ESCAPE はクリア キーが押された場合に、 SRP16_CANCEL はメニューがキャンセルされた場合に、 また、メニュー項目を実際に選択した場合は 項目のインデックスがセットされます。 P32 にはメニュー オブジェクトへのポインタが セットされています。
タイプ:SREVT_CONTROL
P16:UInt16 型
P32:SFRControlPtr
コントロールでキーが押されたりイベントが発生したときに起動されます。 P16 にはコントロールの値がセットされています。 コントロールの値はコントロール固有のものですので、 具体的には各コントロールの解説を参照してください。 P32 にはコントロールのオブジェクトへのポインタがセットされています。

SREVT_RESPONDER_RENDER は描画に関するイベントです。SRP16_RENDER_INVOKE は アプリケーションに対して送信可能です。このイベントを送信するには、以下のように記述します。

SFRApplicationPtr  app;

app->Invoke(SFUEvent(SREVT_RESPONDER_RENDER, SRP16_RENDER_INVOKE, TRUE));
[Tip] Tip

このイベントを送信すると即座に画面が更新されます。 そのため比較的動作の遅い処理となりますので多用することは推奨しません。

SRP16_RENDER_BASE と SRP16_RENDER_CONTENT は受信のみ可能です。 イベントに応答するにはハンドラを登録します。

SFRResponderPtr  responder;

responder->RegisterHandler(SREVT_RESPONDER_RENDER, SRP16_RENDER_CONTENT, HANDLER_BEFORE, Update_static, responder);
[Warning] 警告

このイベントは受信のみ可能です。イベントを送信したときの動作は未定義です。

SREVT_RESPONDER_TERMINATE はオブジェクトの破棄に関するイベントです。 SRP16_TERMINATE_INVOKE はオブジェクトを破棄するときに、対象のオブジェクトに対して 送信し、SRP16_TERMINATE_TRY はオブジェクトが破棄される前に、本当に破棄できるかを 問い合わせるために、破棄されるオブジェクトの内部で起動されます。 送信や受信の方法は描画イベントのときと同じです。 オブジェクトを破棄する方法は、SRP16_TERMINATE_INVOKE を使用する方法しか ありません。delete 演算子を使用してもオブジェクトを破棄できますが、 正常なイベントハンドリング機構は実行されません。

SREVT_DIALOGSREVT_MENUSREVT_CONTROL も送信または受信が可能です。