【发布时间】:2015-05-01 04:54:41
【问题描述】:
窗口总是在后台弹出,但我希望它在前台,至少在终端前面,在终端中执行打开窗口的代码。
我不需要将焦点放在那个窗口上,所以只需在没有焦点的情况下抬起就可以了。 (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 的问题吗?
【问题讨论】:
-
你是如何执行程序的? window manager的focus policy是否设置为click to focus?
-
嗨 Elvisjames,我编译了上面的程序并从 KDE 中的 bash 终端启动它。焦点窃取预防级别:低,焦点策略:点击焦点。