大家下午好!我一直在从事一个需要没有标题栏的基本窗口的项目。在网络上浏览了一段时间后,我偶然发现了create window without titlebar这个帖子,并回答了“_NET_WM_WINDOW_TYPE_DOCK”原子的用法。我尝试使用以下代码在我的项目中创建一个:
Display* d = fl_display;
XWindow w = XCreateSimpleWindow(d, RootWindow(d, fl_screen),
0, 0,
400, 100,
0,
0x000000, 0x000000);
Atom window_type = XInternAtom(d, "_NET_WM_WINDOW_TYPE", False);
long value = XInternAtom(d, "_NET_WM_WINDOW_TYPE_DOCK", False);
XChangeProperty(d, w, window_type, XA_ATOM, 32, PropModeReplace, (uchar*) &value, 1);
该窗口确实显示,但是它仍然具有标题栏。我在网络上发现了其他一些资源,但是我无法停止显示标题栏。我确实意识到引用的帖子正在使用XCreateWindow,但是原子也不应该在XCreateSimpleWindow上工作。任何帮助,将不胜感激!
谢谢
最佳答案
我对您的示例进行了扩展,以便能够对其进行测试,并且它对我有用-查看您的代码是否存在任何有意义的区别。
#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include <X11/Xutil.h>
int main(int argc, char **argv) {
Display* d = XOpenDisplay(NULL);
int s = DefaultScreen(d);
Window w = XCreateSimpleWindow(d, RootWindow(d, s), 100, 100, 400, 100, 1,
BlackPixel(d, s), WhitePixel(d, s));
Atom window_type = XInternAtom(d, "_NET_WM_WINDOW_TYPE", False);
long value = XInternAtom(d, "_NET_WM_WINDOW_TYPE_DOCK", False);
XEvent e;
XChangeProperty(d, w, window_type, XA_ATOM, 32, PropModeReplace, (unsigned char *) &value, 1);
XMapWindow(d, w);
while (1) {
XNextEvent(d, &e);
if (e.type == Expose) {
XFillRectangle(d, w, DefaultGC(d, s), 20, 20, 10, 10);
}
if (e.type == KeyPress)
break;
}
XCloseDisplay(d);
return 0;
}
关于c++ - 没有标题栏的简单窗口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31361859/