.typeに代入できるマクロの名前 | イベントの種類 |
SDL_ACTIVEEVENT | ウィンドウのアクティブに関するイベント |
SDL_KEYDOWN | キーボードのボタンが押されたとき |
SDL_KEYUP | キーが離れたとき |
SDL_MOUSEMOTION | マウスが動いたとき |
SDL_MOUSEBUTTONDOWN | マウスのボタンが押されたとき |
SDL_MOUSEBUTTONUP | マウスのボタンが離れたとき |
SDL_JOYAXISMOTION | ジョイスティックの軸が動いたとき |
SDL_JOYBALLMOTION | ジョイスティックのボールが動いたとき |
SDL_JOYHATMOTION | ジョイスティックのハットスイッチが変化したとき |
SDL_JOYBUTTONDOWN | ジョイスティックのボタンが押されたとき |
SDL_JOYBUTTONUP | ジョイスティックのボタンが離れたとき |
SDL_QUIT | プログラムが終了するとき(ウィンドウの閉じるボタンが押されたときなど) |
SDL_SYSWMEVENT | 未調査(カット&ペーストするとき使う) |
SDL_VIDEORESIZE | ウィンドウがリサイズされたとき |
SDL_VIDEOEXPOSE | 未調査(再描画する必要性があるとき) |
SDL_USEREVENT | ユーザー定義のイベント |
SDL_Event ev;
SDLKey *key;
key=&(ev.key.keysym.sym);
#include <stdio.h> #include "SDL/SDL.h" #pragma comment(lib, "SDL.lib") #pragma comment(lib, "SDLmain.lib") bool Event(void); //boolはtureかfalseのみ扱う定義 int main(int argc, char* argv[]) { SDL_Init(SDL_INIT_VIDEO); SDL_WM_SetCaption("SAMPLEファイル",NULL); SDL_Surface *screen; screen = SDL_SetVideoMode( 640 , 480 , 32 , SDL_SWSURFACE ); while(1) //プログラムを起動し続けるためにループを作る。 { if(!Event()) break; //もしイベントがあれば、ループを抜ける。 } SDL_Quit(); return 0; } bool Event() //イベント監視用の関数を作る。 { SDL_Event ev; while(SDL_PollEvent(&ev)) //イベントがある限り続ける { if(ev.type == SDL_KEYDOWN) //キーが押されたかどうかの確認。 { SDLKey *key; key=&(ev.key.keysym.sym); if(*key == 27) //ESCボタンが27です。 { printf("ESCボタンが押されました。"); return false; break; //ループを抜ける。 } } if(ev.type == SDL_QUIT) //終了ボタンが押されたときなど。 { return false; break; } } return ture; //イベントがなければtureを返す。 }