SDL解析——SDL事件处理(1)
2010-09-19 10:35
316 查看
原文出处http://www.leeos.org/cms/show_article/89002.html
SDL图形化的基本问题解决了,但图形窗口依旧是一闪而过。我们需要使用SDL内部事件处理机制来解决问题。
SDL的事件处理允许程序响应来自用户的输入(键盘,鼠标……)。而等待相应的时候,程序就会阻塞,从而将图形窗口定格在屏幕当中。
将上面的代码添加到原有程序当中,我们就能实现图形窗口的停留,同时在用户关闭窗口时,退出程序。而实现方法就是首先定义一个SDL_Event类型的数据,然后通过SDL_PollEvent函数来监听。如果却有用户输入,则从阻塞状态中返回,同时SDL_Event也被赋予了代表某个事件的特定值。
SDL_Event是一个枚举类型,其中包含了SDL支持的所有实际事件。
而在获取输入的问题上,SDL采用了最通常的做法,使用一个SDL_EventQ结构体来描述输入队列。
而SDL_PollEvents函数则首先通过SDL_PumpEvents函数来处理硬件独立的事件后,再通过SDL_PeepEvents从队列中提取事件。可想而知,SDL_PumpEvents最终还是要调用相应SDL_VideoDevice内部的PumpEvents函数。
SDL图形化的基本问题解决了,但图形窗口依旧是一闪而过。我们需要使用SDL内部事件处理机制来解决问题。
SDL的事件处理允许程序响应来自用户的输入(键盘,鼠标……)。而等待相应的时候,程序就会阻塞,从而将图形窗口定格在屏幕当中。
将上面的代码添加到原有程序当中,我们就能实现图形窗口的停留,同时在用户关闭窗口时,退出程序。而实现方法就是首先定义一个SDL_Event类型的数据,然后通过SDL_PollEvent函数来监听。如果却有用户输入,则从阻塞状态中返回,同时SDL_Event也被赋予了代表某个事件的特定值。
SDL_Event是一个枚举类型,其中包含了SDL支持的所有实际事件。
而在获取输入的问题上,SDL采用了最通常的做法,使用一个SDL_EventQ结构体来描述输入队列。
而SDL_PollEvents函数则首先通过SDL_PumpEvents函数来处理硬件独立的事件后,再通过SDL_PeepEvents从队列中提取事件。可想而知,SDL_PumpEvents最终还是要调用相应SDL_VideoDevice内部的PumpEvents函数。
相关文章推荐
- 从面向对象编程的角度解析c#中的事件处理机制
- sax(用于处理XML事件驱动的推模型)解析例子
- android源码解析(1)--如何处理布局文件中添加的点击事件
- nginx事件处理框架及源码解析
- libevent事件处理程序struct event解析
- 关于.Net中OnClientClick事件Eval函数解析错误的处理
- 从面向对象编程的角度解析c#中的事件处理机制
- DOM中事件处理概览与原理的全面解析
- SDL 事件处理
- Qt之事件过滤器 截获消息通知 自定义消息处理事件解析.
- SDL事件处理框架
- SYD8801代码解析二【复位等特殊系统行为要等待硬件响应】【协议栈上报事件处理】【时钟源准确度的优化】【修改蓝牙名称】【设置中断优先级】
- SDL Event Handling 事件处理
- SDL学习笔记四(事件处理)
- Java中的事件处理与异常处理机制-解析
- Android中Spinner控件关于二次点击同一item无响应事件解析及处理方法
- DOM中事件处理概览与原理的全面解析
- 深入解析C++程序中激发事件和COM中的事件处理
- Qt的事件处理和定时器解析(实例解析)
- Qt的事件处理和定时器解析