SDL:窗口冻结
SDL: Window freezes
我想开始从事 SDL 工作。我得到了一个示例代码,看看它是否正常工作。编译时我没有收到任何错误,但是当我运行它时,窗口会显示,但程序冻结直到延迟时间结束。我是新手,所以我真的很感激一些帮助。
int main(int argc, char* argv[]) {
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Window *window = 0;
window = SDL_CreateWindow("Hello World!",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
640, 480,
SDL_WINDOW_SHOWN);
SDL_Delay(10000);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
正如@HolyBlackCat所提到的,你需要一个事件循环:https://wiki.libsdl.org/SDL_PollEvent
它应该看起来像这样:
while (true) {
SDL_Event event;
while (SDL_PollEvent(&event)) {
/* handle your event here */
}
/* do some other stuff here -- draw your app, etc. */
}
编辑
您需要将延迟替换为事件循环。相反,您可以关闭事件的应用程序。您至少可以/应该做的是处理SDL_QUIT事件,该事件在用户尝试关闭窗口时发送:
while (!quit) {
SDL_Event event;
while (SDL_PollEvent(&event)) {
/* handle your event here */
//User requests quit
if( event.type == SDL_QUIT )
quit = true;
}
/* do some other stuff here -- draw your app, etc. */
}
相关文章:
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 问:如何使用C++中的按钮从窗口打开窗口
- SDL 窗口不会弹出
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 如何在cpp文件之间切换窗口?在Qt中
- QuadTree只在窗口的右上角绘制
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 处理闪烁窗口事件
- 延迟函数使打开的框架窗口冻结,直到指定的时间过去
- SDL:窗口冻结
- QQuickView窗口在调整鼠标大小时冻结
- FLTK 窗口冻结不一致
- 如何解决从客户端接收消息时窗口冻结问题(无响应)
- Win32 API:打开对话框窗口后应用程序冻结
- Qt -主窗口在运行时冻结
- 如果在父窗口调整大小期间打开,子窗口将冻结
- 为什么将文本添加到 RichEdit 窗口会冻结它
- 如何在 MFC 中连续运行不冻结窗口的函数?
- Win32窗口冻结后,第一次绘制(directx 11)