resize - XCB - 如何设置 WM_SIZE_HINTS?

标签 resize window x11 window-managers xcb

我正在编写一个用于在 xcb 中创建窗口的简约库。
我希望能够创建一个不可调整大小的窗口。我发现,可以通过以下方式向窗口管理器提供提示:

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,但我怎么知道我必须在 *data 参数中放入哪些数据?类型是 XCB_ATOM_INTEGER 还是其他类型?

最佳答案

这是解决方案:

#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;
}

关于resize - XCB - 如何设置 WM_SIZE_HINTS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27769654/

相关文章:

javascript - 变量 = windows.open() 作用于表单输入更改

javascript window.open 并添加参数

linux - X11没有模拟音频输出

java - 如何在 JFrame 中使单个 JPanel 变大

image - C#EmguCV调整Mat大小但保持边界/分辨率

javascript - 单击时调整 div 大小以适应窗口(工作)并在第二次单击时重新调整大小(不工作)

php - 调整图像文件 laravel 5

c# - Shutdown.exe 没有立即关闭系统,为什么?

x11 - C、Xlib 中的 freedesktop XEmbed 系统托盘客户端代码

qt5 - Qt5 和 X11 的严重性能问题