簡體   English   中英

沒有標題欄的簡單窗口

[英]simple 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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM