gpt4 book ai didi

c - 为什么没有边框的窗口总是在最上面

转载 作者:太空宇宙 更新时间:2023-11-04 02:00:25 30 4
gpt4 key购买 nike

我正在尝试在 xlib 中创建无边框窗口(弹出窗口?)。我正在使用这段代码:

#include <stdio.h>
#include <X11/Xlib.h>

int main( int argc, char **argv )
{
Display *display = NULL;
Window window;
XSetWindowAttributes attribs;

display = XOpenDisplay( NULL );
if( !display )
{
printf( "Cannot to open display." );
return 1;
}

attribs.override_redirect = 1;

window = XCreateWindow( display, RootWindow(display, 0), 20, 20, 400, 300, 0, CopyFromParent, CopyFromParent, CopyFromParent, CWOverrideRedirect, &attribs );
XSetWindowBackground( display, window, 0x00F0FF );
XClearWindow( display, window );

XMapWindow( display, window );
XFlush( display );

getchar( );
return 0;
}

它创建无边框的窗口,但这个窗口总是在最上面。问题是:为什么以及如何在 xlib 中将其显示为普通窗口。

最佳答案

这就是覆盖重定向窗口的行为方式。它们旨在实现弹出式菜单和类似的 transient 窗口,并保持在其他窗口之上。

如果这不是您想要的,请不要使用覆盖重定向标志。相反,请使用 WM 提示。参见 here完整的提示列表。您想告诉您的 WM 您拥有哪种窗口类型(_NET_WM_WINDOW_TYPE_TOOLBAR 等),而不是它的装饰方式。参见 here一个用法示例。

如果这仍然不是您想要的,请使用(有点过时的)Motif WM 提示。参见示例 here .

关于c - 为什么没有边框的窗口总是在最上面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27869668/

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