原文地址:http://blog.csdn.net/qingkongyeyue/article/details/53024467
1、SDL中事件和线程(函数同时运行)
2、练习
(1)创建线程
第一个参数是一个函数,创建线程后refresh_video这个函数和下面的while()循环同时执行
(2)refresh_video函数
不断循环,这里的REFRESH_EVENT用于刷新视频的画面,发一个REFRESH_EVENT就延时40ms,用到SDL_PushEvent函数
(3)在循环里(主循环不再有延时,而是放到子线程中,不断循环发送事件,主循环接收事件,改成这样的好处主循环可以响应鼠标的操作,窗口就可以移动啦)
用到REFRESH_EVENT,循环到SDL_waitEvent函数就不往下执行了,如果refresh_video函数发送一个REFRESH_EVENT,就会继续往下执行
(4)屏幕可以随便拉伸,每拉伸一次也是一个事件,对事件进行处理,把窗口设成响应的宽度下面的SDL_WINDOWEVENT是windows系统自带的event,这个event当来回拉伸窗口时被触发,加入没有任何处理函数,拉伸后窗口变化,但是画面大小不变,SDL_GetWindowSize这个函数从SDL的windows中获得拉伸后当前窗口的宽和高存到screen_w和screen_h,在下一次循环的过程中,从而使screen_w和screen_h这两个值发生变化,从而使里面的值发生变化,所以视频自动适应窗口的大小。SDL_QUIT是SDL自带的事件,只要点窗口右上角的叉(X)就会触发这个事件