gpt4 book ai didi

c++ - SDL2 : how to raise window (on top of calling terminal)

转载 作者:太空宇宙 更新时间:2023-11-04 13:38:15 24 4
gpt4 key购买 nike

窗口总是在后台弹出,但我希望它在前台,至少在终端前面,在终端中执行打开窗口的代码。

我不需要关注那个窗口,所以只需要在没有焦点的情况下提升就可以了。(SDL2 Raising a window without giving it focus)。

我已经尝试了所有的 SDL_WindowFlags,但似乎都没有用。SDL_RaiseWindow() 也没有帮助。

该窗口用于以图形方式显示终端程序的结果。我在 CentOs 6.4 上从源代码 2.0.3 编译了 SDL2

我编译了下面的程序并从 KDE 中的 bash 终端启动它(焦点窃取预防级别:低,焦点策略:点击焦点)。

示例代码:

#include <SDL.h>

int main(int, char**){
SDL_Init(SDL_INIT_VIDEO);
SDL_Window *win = SDL_CreateWindow("Hello World!", 100, 100, 640, 480,
SDL_WINDOW_SHOWN | SDL_WINDOW_INPUT_GRABBED |
SDL_WINDOW_INPUT_FOCUS | SDL_WINDOW_MOUSE_FOCUS |
SDL_WINDOW_FOREIGN | SDL_WINDOW_OPENGL);
SDL_RaiseWindow(win);

SDL_Delay(4000);
SDL_DestroyWindow(win);
SDL_Quit();

return 0;
}

编辑: 我在 Windows 下的 Cygwin64 中尝试过相同的示例。在这种情况下,窗口会在终端前弹出。那么这是 CentOS/window-manager 的问题吗?

最佳答案

KDE/CentOs 中的行为取决于窗口管理器的防止焦点窃取级别设置。它被设置为。当我将其设置为 none 时,窗口将在顶部升起。我的新问题是:即使设置low,我能否以某种方式强制升高窗口? ( https://stackoverflow.com/questions/28785519/force-window-to-be-raised-with-focus-stealing-prevention-level-low )

Windows 中的 Cygwin64 下也会出现该窗口。

关于c++ - SDL2 : how to raise window (on top of calling terminal),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28782681/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com