事件例子

過濾和處理事件

使用
SDL;

//這個功能可以順利運轉一根分開事件線
功能FilterEvents const事件:PSDL_Event:整數;

抵制:整數;
開始
聯合抵制:=1;

//這離開事件用信號表示窗戶的關閉
如果那時((event.type_=SDL_QUITEV)抵制)
開始
MessageBox(0'離開過濾掉事件--再次'嘗試'資訊',MB_OK或者MB_ICONHAND);
聯合抵制:=0;
隨之發生:=0;
出口;
末端;

如果那時(event.type_=SDL_MOUSEMOTION)
開始
MessageBox 0,PChar格式化滑鼠向前移動x:%d,y:%d'[,event.motion.x,event.motion.y'],資訊,MB_OK或者MB_ICONHAND;
隨之發生:=0;//放下它,我們已經處理它
出口;
末端;
隨之發生:=1;
末端;


事件:TSDL_Event;
關鍵:PKeyStateArr;
開始

//預置SDL圖書館((事件用繩圈緊)的出發
如果(SDL_Init((SDL_INIT_VIDEO)<0)那時
開始
MessageBox 0,PChar格式化Couldn t預置SDL:%s'[,SDL_GetError'],錯誤,MB_OK或者MB_ICONHAND;
SQL_Quit;
使(1)停下來;
末端;

//忽視重要事件
SDL_EventState((SDL_KEYDOWN,SDL_IGNORE);
SDL_EventState((SDL_KEYUP,SDL_IGNORE);

//過濾器離開和滑鼠向事件做手勢
SDL_SetEventFilter((FilterEvents);

//除非我們有一作為參考展示,滑鼠不是許多使用
如果那時(SDL_SetVideoMode((640,480,8,0)=)
開始
MessageBox 0,PChar格式化不能設定640x480x8影像方式:%s'[,SDL_GetError'],錯誤,MB_OK或者MB_ICONHAND;
使(1)停下來;
末端;

等待ESC+Mouse_Button//圈
(SDL_WaitEvent((@event)>=0)的同時
開始
event.type_裝入盒子
SDL_ACTIVEEVENT:
開始
如果那時(event.active.stateSDL_APPACTIVE)
開始
如果那時(event.active.gain)
開始
MessageBox(('App被激活的'0',資訊',MB_OK或者MB_ICONHAND);
末端
其他
開始
MessageBox((0',App Iconified'',資訊',MB_OK或者MB_ICONHAND);
末端;
末端;
末端;

SDL_MOUSEBUTTONDOWN:
開始
關鍵:=PKeyStrateArr((SDL_GetKeyState(());
如果那時(調整[SDLK_ESCAPE]=SDL_PRESSED)的音調
開始
MessageBox(0',輪空輪空''...資訊',MB_OK或者MB_ICONHAND);S
使(0)停下來;
末端;
MessageBox((0',Moused按的電鈕'',資訊',MB_OK或者MB_ICONHAND);
末端;

SDL_QUITEV:
開始
MessageBox 0',請求放棄'離開.'資訊',MB_OK或者MB_ICONHAND;
使(0)停下來;
末端;
末端;
末端;
//這個是不應該發生
MessageBox 0,PChar格式化SDL_WaitEvent錯誤:%s'[,SDL_GetError'],錯誤,MB_OK或者MB_ICONHAND;
使(1)停下來;
末端;