SDL窗口在运动中消失了吗?

时间:2019-04-06 15:42:27

标签: c++ c sdl sdl-2

我正在编写带有SDL_WINDOW_BORDERLESS窗口标志的程序。现在,我想自由移动窗口,但是正如您所知,您不能这样做,因为您没有处于BORDERLESS模式的窗口栏。我想到了用箭头键移动窗口的想法。最初,它的工作原理非常好,但是到了显示图像的时候了。 BMP是准确的;窗口,按下第二个箭头键,窗口消失。

我已尽力更改了代码,但似乎无法弄清是什么原因导致窗口消失?似乎没有任何作用。有谁知道是什么原因以及如何解决?

int right;
int down;

bool isquit = false;
SDL_Event event;
while (!isquit) {
   if (SDL_PollEvent( & event)) {
       switch(event.key.keysym.sym) {
              case SDL_QUIT:
                   isquit = true;
                   break;
              case SDLK_RIGHT:
                   right = right + 10;

                   SDL_SetWindowPosition(window, right, down);
                   break;
              case SDLK_DOWN:
                   down = down + 10;

                   SDL_SetWindowPosition(window, right, down);
                   break;
              case SDLK_LEFT:
                   right = right - 10;

                   SDL_SetWindowPosition(window, right, down);
                   break;
              case SDLK_UP:
                   down = down - 10;

                   SDL_SetWindowPosition(window, right, down);
                   break;
              case SDLK_ESCAPE:
                   isquit = true;
                   break;
           }
     }
}

有人知道反正用箭头键移动无边框窗口吗?

1 个答案:

答案 0 :(得分:3)

您的rightdown变量是自动本地变量。它们未初始化。因此,当您设置窗口位置时,它会移出屏幕(可能距离很大)。

您应该设置编译器警告级别,以通知您未分配的局部变量的使用。

相关问题