SDL窗口在启动时关闭并返回0
SDL window closes on startup and returns 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;
}
添加printf()语句将其缩小到这一部分
while(SDL_PollEvent(&ev))
{
if(ev.type = SDL_QUIT)
{
quit = true;
}
}
如果我将while(SDL_PollEvent(&ev))
更改为while(!SDL_PollEvent(&ev))
或while(SDL_PollEvent(&ev) != 0)
该窗口保持打开状态,但只要我将鼠标悬停在它上面或尝试移动它,它就会关闭。
SDL文档说如果有挂起的事件,SDL_PollEvent
只返回1(true),由于程序返回0,似乎SDL_PollEvent
一定以某种方式返回了1,而且ev.type
在没有单击X按钮的情况下被设置为SDL_QUIT
,我觉得这不太可能。所以我可能做错了什么,但我不知道是什么,我一直在努力寻找解决方案。
此外,这里还有init()函数。
bool init()
{
bool success = true;
if( SDL_Init(SDL_INIT_VIDEO) < 0)
{
printf("SDL failed to initialize! SDL Error: %sn", 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: %sn", SDL_GetError());
success = false;
}
else
{
screenSurface = SDL_GetWindowSurface(window);
if(screenSurface == NULL)
{
printf("Screen surface could not be created! SDL Error: %sn", SDL_GetError());
}
}
}
return success;
}
控制台不输出init()函数中的任何printf语句,所以我不认为这是问题所在
这里的一个常见错误:
if(ev.type = SDL_QUIT)
-这是一项任务,而不是比较。然后,您的代码的第一个版本应该可以工作了。
相关文章:
- 从两个窗口返回前景窗口
- 返回主窗口/ C ++后,应用程序正在关闭
- 如何在 c++ 窗口中将参数和返回的退出值传递到批处理文件/从批处理文件获取返回的退出值
- QT-如何通过按下按钮从子窗口小部件返回到父窗口小部件
- GetWindowRect()返回的大小小于游戏的实际可见窗口的可能原因是什么
- 将窗口的样式从标准更改为没有标题栏和返回
- 来自程序子窗口的位图返回为黑色
- SDL窗口在启动时关闭并返回0
- 标准容器/库,用于存储数字窗口并返回唯一数字的数量
- 当在拖动/调整窗口大小的同时对窗口调用isActive()时,返回false.(X11,问题5.4.0)
- NTP服务器总是返回相同的错误日期(窗口)
- 使用 BitBlt 捕获程序窗口始终返回相同的图像
- IsWindowVisible() 是否可以在 Excel 窗口打开时返回 false
- 防止控制台窗口在返回值后自行关闭
- IsIconic()总是返回false,而OpenIcon()从不打开窗口
- CreateWindowEx返回null:无法创建窗口
- 返回"file already exists"错误的窗口类的注册类
- 将焦点设置到父窗口,然后返回到子窗口
- 我怎么能返回信息后,我的主窗口在Qt关闭
- 创建一个向主窗体返回值的模态窗口