#include "SDL.h"
void SDL_SetEventFilter(SDL_EventFilter filter);
此函數在所有事件壓入事件隊列前設置一個過濾器來處理它們。這是一個非常強大、靈活的功能。過濾器的原型如下:
typedef int (*SDL_EventFilter)(const SDL_Event *event);
若過濾器返回1,則將事件壓入內部隊列。若它返回0,則將其從隊列中刪除。這允許有選擇性的動態過濾。
當處理SDL_QUITEVENT類型的事件時發出警告。僅當窗口管理器要關閉應用程序窗口時,才調用事件過濾器。若事件過濾器返回1,則會關閉窗口。否則,如果可以的話,就保持窗口的打開狀態。若退出事件由中斷信號產生,則它會繞過內部隊列並在下一次輪詢時傳遞給應用程序。
通過SDL_PushEvent或SDL_PeepEvents壓入隊列的事件不會傳遞給事件過濾器。
注意!事件過濾函數可能在不同線程間運行。因此,請謹慎而為之。
SDL_Event、SDL_GetEventFilter、SDL_PushEvent
2010年6月26日