Uint32 | type | SDL_MOUSEWHEEL |
Uint32 | timestamp | イベントのタイムスタンプ |
Uint32 | windowID | フォーカスのあるウィンドウ (可能なら) |
Uint32 | which | マウスインスタンスID, またはSDL_TOUCH_MOUSEID (詳細を参照すること) |
Sint32 | x | 水平方向のスクロール量. 正が右で, 負が左 |
Sint32 | y | 垂直方向のスクロール量. 正が奥で, 負が手前 |
Uint32 | direction | SDL_MOUSEWHEEL_NORMALまたはSDL_MOUSEWHEEL_FLIPPED (SDL 2.0.4以降) |
float | preciseX | 浮動小数点で表された水平方向のスクロール量. 正が右で, 負が左 (SDL 2.0.18以降) |
float | preciseY | 浮動小数点で表された垂直方向のスクロール量. 正が奥で, 負が手前 (SDL 2.0.18以降) |
SDL_Event event;
while( SDL_PollEvent( &event ) )
{
if(event.type == SDL_MOUSEWHEEL)
{
if(event.wheel.y > 0) // 上へスクロール
{
// 引き上げた場合のコードをここに書く!
}
else if(event.wheel.y < 0) // 下へスクロール
{
// 押し下げた場合のコードをここに書く!
}
if(event.wheel.x > 0) // 右へスクロール
{
// ...
}
else if(event.wheel.x < 0) // 左へスクロール
{
// ...
}
}
else if(event.type == SDL_SDL_MOUSEBUTTONDOWN)
{
// ... マウスクリックを処理する
}
// ... その他のイベントを処理する ...
}
SDL_MouseWheelEventはSDL_Eventのメンバで, SDL_MOUSEWHEELが報告されたときに使われる. eventのwheelフィールドからアクセスできる.
SDL_MOUSEWHEELはユーザがマウスホイールを動かすと発生する.
左側に動かすとxが負の値になり, 右側に動かすとxが正の値になる. 下側(戻る方向)に動かすとyが負の値になり, 上側(進む方向)に動かすとyが正の値になる.
whichは, 本物のマウスではなくタッチ入力デバイスのときSDL_TOUCH_MOUSEIDとなる. アプリケーションが既にSDL_TouchFingerEventを扱っているならば, このイベントは無視したほうがよい.
SDLはマウスホイールのスクロールの方向を全ての環境で正しく扱えるわけではない(SDL_MOUSEWHEEL_NORMAL). directionがSDL_MOUSEWHEEL_FLIPPEDのとき, xとyの値がそれぞれ逆になる. -1を掛けると元に戻る.