イベント処理
SDLでイベントを処理するには、「SDL_PollEvent関数」を使用します。
SDL_PollEvent関数
未処理のイベントをキューから取り出します。
宣言
int SDL_PollEvent( SDL_Event* event );
引数
event | 取り出したイベントを代入するための変数のアドレスです。 |
戻り値
キューに未処理のイベントがある場合は「1
」を返し、ない場合は「0
」を返します。
サンプルプログラム
#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 )
{
switch ( event_info.type )
{
case SDL_QUIT:
is_finished = true;
break;
// ここで他( SDL_QUIT以外 )のイベントを処理
}
}
}
SDL_DestroyWindow( window );
SDL_Quit();
return 0;
}