イベントの管理:アクセラレーター
アクセラレーターは、それが付加されたコンテナーで発生する単一のユーザー・イベントを管理します。アクセラレーターは、このシングル・ユーザー・イベントと関数の呼び出しを直接結び付けます。適切なイベントが発生した場合に呼び出される任意の関数を宣言できます。適切なイベントが発生した場合、アクセラレーターはそれが付加されたコンテナーから目に見える応答をトリガーします。
また、アクセラレーターのリストの中から IlvContainerAccelerator クラスのインスタンスをインストールすることもできます。このインスタンスには監視するイベントが記述されており、このイベントが発生するとこのクラスのメンバー関数が呼び出されます。
詳細は、以下を参照してください。
メンバー関数
メンバー関数の中にはアクセラレーターを処理するものがあります。
addAccelerator コンテナーに新しいアクセラレーターをインストールします。下記の例では、あるイベントがキーボード・イベントである「Q キーの解除」と一致すると、
Quit 関数がトリガーされます。
static void Quit(IlvContainer* cont, IlvEvent&, IlAny) { IlvDisplay* d = cont->getDisplay(); delete d; IlvExit(0); }IlvRect size(0, 0, 300, 300); IlvContainer* cont = new IlvContainer(display, "Cont", "My Window", size, IlTrue, IlFalse); cont->addAccelerator(Quit, IlvKeyUp, ’Q’, 0); |
アクセラレーターの実装:IlvContainerAccelerator
パラメーターをコールバック関数に追加する必要がある場合、IlvContainerAccelerator クラスを使用してクラスをサブタイプ化し、アクセラレーターを実装できます。
このクラスを処理するメンバー関数は次のとおりです。
addAccelerator コンテナーに
IlvContainerAccelerator オブジェクトをインストールします。前述の例は、以下のように記述することができます。
IlvContainerAccelerator* acc = new IlvContainerAccelerator(Quit, IlvKeyUp, ‘Q’, 0); cont->addAccelerator(acc); |
getAccelerator 特定のイベント引数に一致する
IlvContainerAccelerator インスタンスへのポインターを返します。一致するアクセラレーターがない場合は、
0 を返します。
定義済みのコンテナー・アクセラレーター
Rogue Wave Views には、定義済みのアクセラレーターが多数用意されており、コンテナーに格納されているオブジェクトの表示的側面を簡単に操作するプログラムが作成できます。
定義済みのコンテナー・アクセラレーター
イベント・タイプ | キーまたはボタン | アクション |
IlvKeyDown | i | トランスフォーマーを同一に設定します。 |
IlvKeyDown | <右> | ビューを左に移動します。 |
IlvKeyDown | <左> | ビューを右に移動します。 |
IlvKeyDown | <下へ> | ビューを上に移動します (x を減らす)。 |
IlvKeyDown | <上へ> | ビューを下に移動します。(x を増やす) |
IlvKeyDown | Z | ビューを拡大する。 |
IlvKeyDown | U | ビューを縮小します。 |
IlvKeyDown | R | ビューを、反時計回りに 90 度回転させます。 |
IlvKeyDown | f | すべてのオブジェクトを表示できるように、新しいトランスフォーマーを計算します。 |
Version 6.0
Copyright © 2015, Rogue Wave Software, Inc. All Rights Reserved.