Окно закрывается, как только я запускаю программу. это основная функция:Окно SDL закрывается при запуске и возвращает 0
int main(int argc, char* argv[])
{
if (!init())
{
printf("Could not initialize!");
}
else
{
bool quit = false;
SDL_Event ev;
while(!quit)
{
while(SDL_PollEvent(&ev))
{
if(ev.type = SDL_QUIT)
{
quit = true;
}
}
}
}
close();
return 0;
}
Добавление Е() заявления сузили этот раздел
while(SDL_PollEvent(&ev))
{
if(ev.type = SDL_QUIT)
{
quit = true;
}
}
Если я изменить while(SDL_PollEvent(&ev))
к while(!SDL_PollEvent(&ev))
или while(SDL_PollEvent(&ev) != 0)
окно остается открытым, но закрывается, как только я наведите курсор мыши на нее или попробуйте переместить ее.
the SDL documentation говорит, что SDL_PollEvent
только возвращает 1 (истина), если есть отложенный событие, и, так как программа возвращает 0, похоже SDL_PollEvent
должно быть возвращено 1 как-то и что ev.type
был установлен SDL_QUIT
без нажатия кнопки X , что я считаю маловероятным. Поэтому я, вероятно, сделал что-то не так, но я не могу понять, что это такое, и я пытался найти решение.
Также здесь функция init().
bool init()
{
bool success = true;
if(SDL_Init(SDL_INIT_VIDEO) < 0)
{
printf("SDL failed to initialize! SDL Error: %s\n", SDL_GetError());
success = false;
}
else
{
window = SDL_CreateWindow("Image Encrypter", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
if(window == NULL)
{
printf("Window could not be created! SDL Error: %s\n", SDL_GetError());
success = false;
}
else
{
screenSurface = SDL_GetWindowSurface(window);
if(screenSurface == NULL)
{
printf("Screen surface could not be created! SDL Error: %s\n", SDL_GetError());
}
}
}
return success;
}
консоль не выводит какой-либо из PRINTF операторов в функции инициализации(), так что я не думаю, что это где проблема.