Я создаю видеоплеер с использованием SDL, и я использую язык программирования C. В моей основной функции я создаю "цикл цикла" и показываю видео. После отображения последнего видеофрагмента я держу окно дисплея вверх. Когда я пытаюсь закрыть окно с помощью правой кнопки "X", оно не закрывает окно, так как к нему не подключен обратный вызов. Мой вопрос: есть ли способ подключить обратный вызов к событию закрытия Windows. Я ищу решение, которое работает на всех платформах (windows, linux и mac)
SDL имеет SDL_AddEventWatch(), вы можете настроить фильтр, который вызывает ваш обработчик на SDL_QUIT. Вы также можете просто перебрать через SDL_WaitEvent() в своем потоке, и это вызовет ваш обратный вызов или выполнит ваш код там.
Изменение: SDL_WaitEvent() должен использоваться в потоке, который инициализировал видеосистему. То же самое для других событий очереди событий SDL. Поэтому вы должны правильно настроить это, это проблема дизайна.
Просто поместите это в свой основной цикл для обработки событий, если вы не обрабатываете QuitEvent, ваше окно не будет закрыто, нажав на X.
SDL_Event evt;
while(SDL_PollEvent(&evt))
{
switch(evt->type)
{
case SDL_QUIT:
//your quit procedure
break;
}
}