マウスの入力
SDLでマウスの入力を取得するには、「SDL_GetMouseState関数」を使用します。
SDL_GetMouseState関数
マウスの入力状態を取得します。
宣言
Uint32 SDL_GetMouseState( int* x, int* y );
引数
x | マウス( カーソル )のX座標です。 この値はウィンドウの相対座標になります。 |
y | マウス ( カーソル ) のY座標です。 この値はウィンドウの相対座標になります。 |
戻り値
「各ボタンに対する入力状態を表すビット列」を返します。この値と以下のビットマスクで論理積を行うことにより、そのボタンが押しているか判別できます。
SDL_BUTTON_LMASK | 左ボタンの状態を得るためのマスクです。 |
SDL_BUTTON_MMASK | 中央ボタンの状態を得るためのマスクです。 |
SDL_BUTTON_RMASK | 右ボタンの状態を得るためのマスクです。 |
サンプルコード
#include <SDL.h>
int main( int argc, char* argv[] )
{
if ( SDL_Init( SDL_INIT_VIDEO ) != 0 )
{
SDL_Log( u8"SDLの初期化処理に失敗しました。エラーメッセージ: %s", SDL_GetError() );
return -1;
}
auto window = SDL_CreateWindow(
u8"サンプル",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
1280,
720,
0
);
if ( window == nullptr )
{
SDL_Log( u8"ウィンドウの作成に失敗しました。エラーメッセージ: %s", SDL_GetError() );
SDL_Quit();
return -1;
}
auto is_finished = false;
while ( !is_finished )
{
auto event_info = SDL_Event();
while ( SDL_PollEvent( &event_info ) == 1 )
{
if ( event_info.type == SDL_QUIT ) is_finished = true;
}
auto mouse_position_x = 0;
auto mouse_position_y = 0;
auto mouse_button_state = SDL_GetMouseState( &mouse_position_x, &mouse_position_y );
if ( mouse_button_state & SDL_BUTTON_LMASK )
{
SDL_Log( u8"マウス座標: X = %d, Y = %d", mouse_position_x, mouse_position_y );
}
SDL_Delay( 33 );
}
SDL_DestroyWindow( window );
SDL_Quit();
return 0;
}