ここでは 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 を返すと、オブジェクトの破棄は中断
されます。
開発者はこのイベントを送信してはいけません。
|
|
ダイアログでキーが押されたりイベントが
発生したときに起動されます。
P16 パラメータにはダイアログが閉じられた理由が
セットされています。
SRP16_OK は OK ボタンが押された場合に、SRP16_ESCAPE は
クリア キーが押された場合にセットされます。
P32 にはダイアログ オブジェクトへのポインタがセットされています。
|
|
メニューでキーが押されたりイベントが
発生したときに起動されます。
P16 にはメニューが閉じられた理由もしくは
メニューが選択された場合はそのインデックスが
セットされています。
SRP16_ESCAPE はクリア キーが押された場合に、
SRP16_CANCEL はメニューがキャンセルされた場合に、
また、メニュー項目を実際に選択した場合は
項目のインデックスがセットされます。
P32 にはメニュー オブジェクトへのポインタが
セットされています。
|
|
コントロールでキーが押されたりイベントが発生したときに起動されます。
P16 にはコントロールの値がセットされています。
コントロールの値はコントロール固有のものですので、
具体的には各コントロールの解説を参照してください。
P32 にはコントロールのオブジェクトへのポインタがセットされています。
|
SREVT_RESPONDER_RENDER は描画に関するイベントです。SRP16_RENDER_INVOKE は
アプリケーションに対して送信可能です。このイベントを送信するには、以下のように記述します。
SFRApplicationPtr app;
app->Invoke(SFUEvent(SREVT_RESPONDER_RENDER, SRP16_RENDER_INVOKE, TRUE));
![[Tip]](images/tip.png) |
Tip |
このイベントを送信すると即座に画面が更新されます。
そのため比較的動作の遅い処理となりますので多用することは推奨しません。
|
SRP16_RENDER_BASE と SRP16_RENDER_CONTENT は受信のみ可能です。
イベントに応答するにはハンドラを登録します。
SFRResponderPtr responder;
responder->RegisterHandler(SREVT_RESPONDER_RENDER, SRP16_RENDER_CONTENT, HANDLER_BEFORE, Update_static, responder);
![[Warning]](images/warning.png) |
警告 |
このイベントは受信のみ可能です。イベントを送信したときの動作は未定義です。
|
SREVT_RESPONDER_TERMINATE はオブジェクトの破棄に関するイベントです。
SRP16_TERMINATE_INVOKE はオブジェクトを破棄するときに、対象のオブジェクトに対して
送信し、SRP16_TERMINATE_TRY はオブジェクトが破棄される前に、本当に破棄できるかを
問い合わせるために、破棄されるオブジェクトの内部で起動されます。
送信や受信の方法は描画イベントのときと同じです。
オブジェクトを破棄する方法は、SRP16_TERMINATE_INVOKE を使用する方法しか
ありません。delete 演算子を使用してもオブジェクトを破棄できますが、
正常なイベントハンドリング機構は実行されません。
SREVT_DIALOG や
SREVT_MENU や
SREVT_CONTROL
も送信または受信が可能です。