SDLでイベント処理
前回の続きです。
今度のプログラムは、キーボードを押すと画面を白く塗ります。
マウスボタンを押すと、画面を青く塗ります。
#include <SDL/SDL.h> #pragma comment(lib,"SDL.lib") #pragma comment(lib,"SDLmain.lib") #define WIDTH 320 //横幅 #define HEIGHT 240 //高さ #define BPP 32 //1ピクセルのビット数 #define FLG_INIT (SDL_INIT_VIDEO) static SDL_Surface *screen; //ビデオポインタ bool init(void); //初期化 void run(void); //メイン処理 void quit(void); //終了処理 int main(int argc, char *argv[]) { if( init() )run(); quit(); return 0; } bool init(void) { // ライブラリを初期化する if(SDL_Init(FLG_INIT) < 0) { printf("初期化に失敗"); return false; } // ビデオモードを設定する screen = SDL_SetVideoMode(WIDTH,HEIGHT, BPP, SDL_SWSURFACE ); if( screen == NULL) { printf("VideoInitialize Error"); return false; } return true; } void run(void) { SDL_Event ev; // 次のイベントが来るまで無限に待機 while( SDL_WaitEvent(&ev) ) { switch(ev.type){ case SDL_QUIT: //ウィンドウの×ボタン printf("QUIT\n"); return; case SDL_KEYDOWN: //キーダウン printf("KeyDonw\n"); SDL_FillRect(screen,NULL,0xffffff); break; case SDL_MOUSEBUTTONDOWN://マウスダウン printf("MouseDown\n"); SDL_FillRect(screen,NULL,0x007fff); break; default:break; //それ以外のイベントは無視する } SDL_Flip(screen); } } void quit(void) { if(screen != NULL) { SDL_FreeSurface( screen ); } SDL_Quit(); } |