HITrackballは内部でDVKeyMouseCallbackを継承します. SetKeyMouseによりDVKeyMouseにコールバック登録すると, マウスカーソルが移動するたびにOnMouseMoveイベントハンドラが呼び出され,トラックボールの内部状態が更新されます. マウス移動時のボタン状態に応じてトラックボールのどの状態が変化するかはある程度カスタマイズが可能です. 以下に関連する機能を示します.
HITrackballDesc |
||
int |
rotMask |
回転操作のボタン割当て |
int |
zoomMask |
ズーム操作のボタン割当て |
int |
trnMask |
平行移動操作のボタン割当て |
HITrackballIf |
|
void |
SetRotMask(int mask) |
void |
SetZoomMask(int mask) |
void |
SetTrnMask(int mask) |
rotMask, zoomMask, trnMaskはそれぞれ 回転操作,ズーム操作,平行移動操作に割り当てたいマウスボタンに対応する OnMouseMoveのbutton引数の値を表します. 以下に対応関係をまとめます.
マウス移動方向 |
button値 |
変化量 |
左右 |
rotMask |
経度 |
上下 |
rotMask |
緯度 |
上下 |
zoomMask |
距離 |
左右 |
trnMask |
注視点x座標 |
上下 |
trnMask |
注視点y座標 |
デフォルトのボタン割当ては以下の通りです.
rotMask |
LBUTTON |
zoomMask |
RBUTTON |
trnMask |
LBUTTON + ALT |
したがって,左ボタンドラッグで回転操作,右ボタンドラッグでズーム操作,[ALT]キー+左ドラッグで平行移動となります.
なお,現状ではマウスの移動方向との対応をカスタマイズすることはできません. また,マウスホイールの回転とトラックボールを連動させる機能も未実装です.