SDL_VIDEORESIZE не работает

У меня есть приложение SDL, и я хочу изменить размер окна. Поэтому я поставил правильный флаг в SDL_SetVideoMode() и сделал обработчик событий. Но когда я изменяю размер окна, обработчик не активируется. Я не знаю почему.

Код моего цикла событий:

while (SDL_PollEvent (&event));
{
    if (event.type == SDL_QUIT)
        return 0+1;
    else if (event.type == SDL_VIDEORESIZE)
    {
        board.x = static_cast<int> ( static_cast<float> (event.resize.w - 2 * hMargin) / Field + 0.5f );
        board.y = static_cast<int> ( static_cast<float> (event.resize.h - 2 * vMargin - Face - FaceSpace) / Field + 0.5f );
        return 0;
    }
}

return 0+1 для успешного выхода (main возвращает 0); return 0 предназначен для перезапуска приложения (выполнение другого SetVideoMode).

Похоже, когда я изменяю размер окна, событие не отправляется.

Я использую SDL версии 1.2.14.

РЕДАКТИРОВАТЬ:

Я написал пример программы, и она сработала. Но я еще раз посмотрел на код и... увидел точку с запятой после while() -.-


person Xirdus    schedule 06.11.2010    source источник
comment
Можете ли вы опубликовать полную минимальную программу SDL, демонстрирующую проблему?   -  person genpfault    schedule 06.11.2010
comment
Да, кажется, что ; это вина :)   -  person Diego Sevilla    schedule 06.11.2010


Ответы (1)


  1. Я считаю, что вы можете просто вызвать SDL_SetVideoMode(), не выходя из SDL для изменения размера.
  2. ; через некоторое время, как заметил Диего Севилья
  3. Есть возможность создать экран с автоматическим изменением размера на тот случай, если вы не знали

http://www.libsdl.org/cgi/docwiki.cgi/SDL_SetVideoMode говорит все

person Rxz_14    schedule 23.07.2012