繁体   English   中英

带有SDL 1.2的X11 XMoveWindow不会移动窗口

[英]X11 XMoveWindow with SDL 1.2 does NOT move window

我正在双屏设置。 屏幕位于一个屏幕上。 我在SDL中创建一个窗口,该窗口是两个屏幕的总和。 该窗口出现在“底部”屏幕的左上方。 我希望它位于TOP屏幕的左上方。 当我尝试使用XMoveWindow移动它时,它会在其中移动图像,而不是移动窗口。 我正在渲染OpenGL场景。 我使用的是Linux和SDL 1.2,我知道这是有问题的,但是我无法使用SDL2。

有什么想法吗?

我有一个创建的SDL窗口

SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER | SDL_INIT_NOPARACHUTE);

SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
screen = SDL_SetVideoMode(w, h, 32, SDL_HWACCEL | SDL_OPENGL | SDL_GL_DOUBLEBUFFER);

但是,当我运行我的程序时,窗口将保留在原处,并且其中的图像已偏移200-200。

#include <SDL/SDL.h>
#include <SDL/SDL_syswm.h>
#include <GL/gl.h>
#include <X11/Xlib.h>

void move()
{
    SDL_SysWMinfo info;
    SDL_VERSION(&info.version);


    if (SDL_GetWMInfo(&info))
    {
        // Put the window at origin!!!!!
        cout << "xmovewindow: " << XMoveWindow(info.info.x11.display, info.info.x11.window, 200, -200) << endl;
        // prints "xmovewindow: 1"
    }
}

我也在努力实现这一目标,似乎只有一种肮脏的方式。

您必须使用SDL_SetVideoMode() ,它可以按照SDL文档中所述进行操作

尝试这个:

SDL_putenv(const_cast<char*>("SDL_VIDEO_CENTERED="));
SDL_putenv(const_cast<char*>("SDL_VIDEO_WINDOW_POS=100,50"));
SDL_SetVideoMode(width, height, bpp, flags);

但是,如果视频模式已经相同且具有相同的高度和高度,则这将无效!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM