我正在编写一个用于在 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/