0
我正在嘗試做與this question中相同的事情。如何用XCB去除窗飾?
到目前爲止,我從official documentation瞭解xcb_change_property
功能。
但仍然下面的代碼不會給出任何結果。
xcb_connection_t *c = xcb_connect (NULL, NULL);
/* get the first screen */
xcb_screen_t *screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
xcb_window_t win = xcb_generate_id (c);
xcb_create_window (c, /* Connection */
XCB_COPY_FROM_PARENT, /* depth (same as root)*/
win, /* window Id */
screen->root, /* parent window */
0, 0, /* x, y */
system::getCore()->screen.width(), /* width */
system::getCore()->screen.height(), /* height */
0, /* border_width */
XCB_WINDOW_CLASS_INPUT_OUTPUT, /* class */
screen->root_visual, /* visual */
0,
NULL); /* masks*/
xcb_intern_atom_cookie_t cookie = xcb_intern_atom (c, 0, strlen ("_MOTIF_WM_HINTS"), "_MOTIF_WM_HINTS");
xcb_intern_atom_reply_t *reply = xcb_intern_atom_reply (c, cookie, NULL);
xcb_change_property (c,
XCB_PROP_MODE_REPLACE,
win,
(*reply).atom,
XCB_ATOM_INTEGER,
32,
0,
0);
xcb_map_window (c, win);
xcb_flush (c);
我在做什麼錯?
請勿使用_MOTIF_MW_HINTS,而是閱讀[EWMH](http://standards.freedesktop.org/wm-spec/wm-spec-latest.html)。順便說一句,如果用C++編碼,你最好使用一些C++工具包,如[Qt](http://qt-project.org/)或[Fox](http://fox-toolkit.org/)或[fltk] (http://www.fltk.org)或[Gtkmm](http://gtkmm.org/),因爲生命太短而無法在Xcb中編寫代碼 – 2015-02-06 13:38:20
是的,我正在使用Qt,但現在正在使用該函數, Qt沒有提供。所以我有這樣的低級編程的必要性。 – Sb0y 2015-02-06 13:46:39
然後使用一些低級別的Qt繪畫。並問一個Qt特定的論壇。我相信Qt已經有避免裝飾的功能...(因爲一些Qt窗口沒有) – 2015-02-06 13:48:15