2015-01-04 69 views
1

我正在爲xcb中的窗口創建編寫一個簡約庫。 我希望能夠創建一個不可調整大小的窗口。我發現,有可能給予提示,窗口管理器有:XCB - 如何設置WM_SIZE_HINTS?

xcb_void_cookie_t xcb_change_property (xcb_connection_t *c,  /* Connection to the X server */ 
             uint8_t   mode,  /* Property mode */ 
             xcb_window_t  window, /* Window */ 
             xcb_atom_t  property, /* Property to change */ 
             xcb_atom_t  type,  /* Type of the property */ 
             uint8_t   format, /* Format of the property (8, 16, 32) */ 
             uint32_t   data_len, /* Length of the data parameter */ 
             const void  *data); /* Data */ 

我試圖改變WM_NORMAL_HINTS和WM_SIZE_HINTS具有這種功能,但是我怎麼知道我有什麼數據就擺在*數據參數?是XCB_ATOM_INTEGER類型還是其他?

+0

你找什麼的'WM_SIZE_HINTS'是/包含了文檔? –

+0

我沒有找到有用的東西。我試了幾個小時。 – bakkaa

+0

http://cgit.freedesktop.org/xcb/util-wm/tree/icccm/icccm.c#n725和http://cgit.freedesktop.org/xcb/util-wm/tree/icccm/xcb_icccm.h #n763等。此外,在搜索「WM_SIZE_HINTS」中的*非常*第一鏈接http://tronche.com/gui/x/xlib/ICC/client-to-window-manager/wm-normal-hints.html –

回答

3

這裏是解決方案:

#include <xcb/xcb.h> 
#include <xcb/xcb_icccm.h> 

#define WIDTH 900 
#define HEIGHT 600 

int main(){ 
    //... 
    //Connect to X Server and 
    //Create a window 
    //... 

    xcb_size_hints_t hints; 

    xcb_icccm_size_hints_set_min_size(&hints, WIDTH, HEIGHT); 
    xcb_icccm_size_hints_set_max_size(&hints, WIDTH, HEIGHT); 

    xcb_icccm_set_wm_size_hints(connection, window, XCB_ATOM_WM_NORMAL_HINTS, &hints); 
    return 0; 
} 
+0

非常感謝分享! – Noitidart