c++ - SDL 窗口在移动时消失?

标签 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;
           }
     }
}

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

最佳答案

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

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

关于c++ - SDL 窗口在移动时消失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55550718/

相关文章:

c++ - 添加 resources.rc 文件信息项目

java - 调用未知的构造函数(反射替换)c++

c - 在 C 中使用 0 和 1 作为 false 和 true

c++ - QtCreator 中的 SDL2 undefined reference sdl_Main

c - Linux 头文件中的函数定义中的 DECLSPEC 和 SDLCALL 是什么意思?

c++ - 如何在QML 的RichText 中使用html 源将图片居中?

c++ - 放大 2D 场景中的对象?

.net - 导出的 C 函数、结构和 .Net 编码(marshal)处理中 bool 的大小

c - "long"在 C 中仍然有用吗?

c++ - 如何将 SDL_renderer 转换为 SDL_window?