我正在使用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事件队列的事物也一样。因此,您必须正确设置它,这是一个设计问题。