C++ SDL窗口在启动时关闭并返回0
我一启动程序窗口就会关闭。这是主要功能:C++ SDL窗口在启动时关闭并返回0,c++,return,sdl,exit,C++,Return,Sdl,Exit,我一启动程序窗口就会关闭。这是主要功能: int main(int argc, char* argv[]) { if (!init()) { printf("Could not initialize!"); } else { bool quit = false; SDL_Event ev; while(!quit) { while(SDL_PollEv
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;
}
添加printf()语句将其缩小到本节
while(SDL_PollEvent(&ev))
{
if(ev.type = SDL_QUIT)
{
quit = true;
}
}
如果我将while(SDL\u PollEvent(&ev))
更改为while(!SDL\u PollEvent(&ev))
或while(SDL\u PollEvent(&ev)!=0)
窗口保持打开状态,但当我将鼠标移到它上面或试图移动它时,它就会关闭
表示如果存在挂起的事件,SDL\u PollEvent
仅返回1(true),并且由于程序返回0,因此似乎SDL\u PollEvent
必须以某种方式返回1,并且ev.type
未单击X按钮就设置为SDL\u QUIT
,我认为这不太可能。所以我可能做错了什么,但我不知道是什么,我一直在努力寻找解决办法
另外,这里是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;
}
bool init()
{
布尔成功=真;
if(SDL_Init(SDL_Init_视频)<0)
{
printf(“SDL未能初始化!SDL错误:%s\n”,SDL_GetError());
成功=错误;
}
其他的
{
window=SDL\u CreateWindow(“图像加密器”,SDL\u WINDOWPOS\u未定义,SDL\u WINDOWPOS\u未定义,
屏幕宽度、屏幕高度、显示的SDL窗口);
如果(窗口==NULL)
{
printf(“无法创建窗口!SDL错误:%s\n”,SDL_GetError());
成功=错误;
}
其他的
{
屏幕表面=SDL_GetWindowSurface(窗口);
如果(屏幕表面==NULL)
{
printf(“无法创建屏幕表面!SDL错误:%s\n”,SDL_GetError());
}
}
}
回归成功;
}
控制台在init()函数中不输出任何printf语句,因此我认为这不是问题所在。这里有一个常见错误:
if(ev.type = SDL_QUIT)
-这是作业,不是比较。您的代码的第一个版本应该可以工作