DVKeyMouseからのイベントを処理するにはDVKeyMouseCallbackクラスを継承し,イベントハンドラをオーバライドします. DVKeyMouseCallbackはいくつかのヒューマンインタフェースクラスが継承しているほか, 後述するアプリケーションクラスFWAppも継承しています.
DVKeyMouseCallback |
|
virtual bool |
OnMouse(int button, int state, int x, int y) |
マウスボタンプッシュ/リリース |
|
virtual bool |
OnDoubleClick(int button, int x, int y) |
ダブルクリック |
|
virtual bool |
OnMouseMove(int button, int x, int y, int zdelta) |
マウスカーソル移動/マウスホイール回転 |
|
virtual bool |
OnKey(int state, int key, int x, int y) |
キープッシュ/リリース |
OnMouseはマウスボタンのプッシュあるいはリリースが生じたときに呼び出されます. buttonはイベントに関係するマウスボタンおよびいくつかの特殊キーの識別子を保持し, その値はDVButtonMask列挙子の値のOR結合で表現されます. stateはマウスボタン状態変化を示し,DVButtonSt列挙子のいずれかの値を持ちます. x,yはイベント生成時のカーソル座標を表します. 例として,左ボタンのプッシュイベントを処理するには次のようにします.
// inside your class definition ... virtual bool OnMouse(int button, int state, int x, int y){ if(button & DVButtonMask::LBUTTON && state == DVButtonSt::DOWN){ // do something here } }
OnDoubleClickはマウスボタンのダブルクリックが生じたときに呼ばれます. 引数の定義はOnMouseと同様です.
OnMouseMoveはマウスカーソルが移動するか,マウスホイールが回転した際に呼ばれます. buttonは直前のマウスプッシュイベントにおいてOnMouseに渡されたのと同じ値を持ちます. x, yは移動後のカーソル座標,zdeltaはマウスカーソルの回転量です.
OnKeyはキーボードのキーがプッシュされるかリリースされた際に呼ばれます. stateはDVKeySt列挙子の値を持ちます. keyはプッシュあるいはリリースされたキーの仮想キーコードを保持します.
以下に関連する列挙子の定義を示します.
DVButtonMask |
|
LBUTTON |
左ボタン |
RBUTTON |
右ボタン |
MBUTTON |
中ボタン |
SHIFT |
Shiftキー押し下げ |
CONTROL |
Ctrlキー押し下げ |
ALT |
Altキー押し下げ |
DVButtonSt |
|
DOWN |
ボタンプッシュ |
UP |
ボタンリリース |
DVKeySt |
|
PRESSED |
押されている |
TOGGLE_ON |
トグルされている |