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

SDL Video display window: how to attach a window close event callback

本文关键字:窗口 连接 事件 回调 显示 视频 何连接 SDL      更新时间:2023-10-16

我正在使用SDL创建视频播放器,并且我正在使用C编程语言。在我的主要功能中,我创建一个" for Loop"并显示视频。显示最后一个视频框架后,我将显示窗口抬高。当我尝试使用顶端" X"按钮关闭窗口时,它不会关闭窗口,因为没有附加回调。我的问题是 - 是否有一种将回调附加到该窗口的关闭事件上的方法。我正在寻找一个在所有平台(Windows,Linux和Mac)

上都起作用的解决方案

只需将其放入事件处理的主循环中,如果您不处理窗口,则按下X。

,您的窗口将无法关闭
SDL_Event evt;
while(SDL_PollEvent(&evt))
{
   switch(evt->type)
   {
      case SDL_QUIT:
      //your quit procedure
      break;
   }
}

sdl具有sdl_addeventwatch(),您可以设置一个在sdl_quit上调用处理程序的过滤器。您也可以在其自己的线程中循环循环SDL_WAITEVENT(),然后将其调用或在此处执行代码。

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