我正在用2个窗口编写一个简单的SDL2应用程序。SDL2 - 窗口无法重新打开
当应用程序启动时显示第一个窗口(window
变量),第二个窗口(window2
变量)被隐藏。
预期的行为:
我点击第一窗口,第二窗口弹出,然后我关闭了第二个窗口。
我可以关闭并重新打开窗口,只要我想要。
观察到的行为:
一旦我关闭了第二个窗口,如果我在第一个窗口reclick,第二个窗口不会如预期出现。
如my comment所述:该窗口未出现在我的窗口管理器(即Wayland)中。
代码:
#include <SDL2/SDL.h>
int main()
{
SDL_Window* window, *window2 = NULL;
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
return 1;
} else {
window = SDL_CreateWindow("ONE", SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN);
window2 = SDL_CreateWindow("TWO", SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED, 320, 240, SDL_WINDOW_HIDDEN);
if (window == NULL || window2 == NULL) {
SDL_DestroyWindow(window);
SDL_DestroyWindow(window2);
return 1;
}
bool running = true;
while(running) {
SDL_Event event;
while (SDL_PollEvent(&event)) {
if (event.type == SDL_WINDOWEVENT) {
if (event.window.event == SDL_WINDOWEVENT_CLOSE) {
if (SDL_GetWindowID(window) == event.window.windowID) {
running = false;
} else {
SDL_HideWindow(window2);
}
}
} else if (event.type == SDL_MOUSEBUTTONDOWN) {
SDL_ShowWindow(window2);
}
}
}
}
SDL_DestroyWindow(window);
SDL_DestroyWindow(window2);
SDL_Quit();
return 0;
}
你能否提供更多的细节 –
我不再使用这个项目,所以我无法测试该补丁是否修复了我的错误。考虑到错误的描述,我想它是的。感谢您的帮助。 –