私は2つのウィンドウを持つシンプルなSDL2アプリケーションを作成しています。SDL2 - ウィンドウを再オープンできません
最初のウィンドウ(window
変数)はアプリケーションの起動時に表示され、2番目のウィンドウ(window2
変数)は非表示になります。
期待される動作:
私はその後、私は2番目のウィンドウを閉じて、第二のウィンドウがポップアップし、最初のウィンドウをクリックしてください。
そして、私が望むだけウィンドウを閉じて再び開くことができます。
観察された行動:
私は2番目のウィンドウを閉じると、私は最初のウィンドウでreclick場合に予想されるように、第2のウィンドウは表示されません。
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;
}
詳細はこちら –
私はこのプロジェクトをもう使用しないので、私のバグが修正されているかどうかテストできません。バグの説明を考えればそうだと思います。ご協力ありがとうございました。 –