我对XSetWMNormalHints
和XSetWMSizeHints
感到困惑。我想将窗口设置为不可调整大小,并且调用XSetWMNormalHints
可以正确执行此操作。但是,如果我改为调用XSetWMSizeHints
,则什么也没有发生。窗口仍可调整大小。这两个函数如何用于我的目的,XSetWMSizeHints
到底做什么?我已经阅读了多次文档,但是我仍然很困惑,所以在这里问一个问题。
sh = XAllocSizeHints();
sh->flags = PMinSize | PMaxSize;
sh->min_width = sh->max_width = 100;
sh->min_height = sh->max_height = 100;
XSetWMNormalHints(d, w, sh);
//XSetWMSizeHints(d, w, sh, PMinSize | PMaxSize);
XFree(sh);
最佳答案
根据manual page:
而
在开始时,它显示
void XSetWMSizeHints(Display *display, Window w, XSizeHints *hints, Atom property);
在您注释掉的片段中,它不使用属性(似乎不起作用)。 X11原子(请参阅Xlib Programming Manual: Properties and Atoms)是类似于C指针的标识符(但实际上不是地址),而
PMinSize | PMaxSize
则完全不同:设置了特定位的值。编译器接受了它,因为它们都是无符号值,但是在运行时,该值可能与任何Atom标识符都不匹配。XSetWMNormalHints
在功能中更有用,因为它会更新通常使用的属性:WM_NORMAL_HINTS
。 XSetWMSizeHints
更为通用-允许您使用任何属性-但您可能不需要通用性。关于c++ - `XSetWMNormalHints`和`XSetWMSizeHints`,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30994485/