SDL视频显示窗口:如何附加窗口关闭事件回调

时间:2014-03-07 16:07:39

标签: c++ c video callback sdl

我正在使用SDL创建一个视频播放器,我正在使用C编程语言。在我的主要功能中,我创建了一个“for循环”并显示视频。显示最后一个视频帧后,我保持显示窗口。当我尝试用右上角的“X”按钮关闭窗口时,它不会关闭窗口,因为没有连接回调。我的问题是 - 有没有办法将回调附加到该窗口的关闭事件。我正在寻找适用于所有平台(windows,linux和mac)的解决方案

2 个答案:

答案 0 :(得分:2)

只需将它放入事件处理的主循环中,如果你不处理QuitEvent,按下X就不能关闭你的窗口。

SDL_Event evt;

while(SDL_PollEvent(&evt))
{

   switch(evt->type)
   {
      case SDL_QUIT:
      //your quit procedure
      break;
   }

}

答案 1 :(得分:0)

SDL有SDL_AddEventWatch(),你可以设置一个在SDL_QUIT上调用你的处理程序的过滤器。您也可以在自己的线程中循环遍历SDL_WaitEvent(),然后调用您的回调或在那里执行您的代码。

编辑:必须在初始化视频系统的线程中使用SDL_WaitEvent()。对于其他SDL事件队列事物也是如此。所以你必须正确设置它,这是一个设计问题。