C++ Xlib这(移除窗户装饰)是如何工作的?
下面的代码如何删除窗口边框C++ Xlib这(移除窗户装饰)是如何工作的?,c++,linux,xlib,window-managers,C++,Linux,Xlib,Window Managers,下面的代码如何删除窗口边框 //note the struct is declared elsewhere, is here just for clarity. //code is from [http://tonyobryan.com/index.php?article=9][1] typedef struct Hints { unsigned long flags; unsigned long functions; unsigned long decora
//note the struct is declared elsewhere, is here just for clarity.
//code is from [http://tonyobryan.com/index.php?article=9][1]
typedef struct Hints
{
unsigned long flags;
unsigned long functions;
unsigned long decorations;
long inputMode;
unsigned long status;
} Hints;
//code to remove decoration
Hints hints;
Atom property;
hints.flags = 2;
hints.decorations = 0;
property = XInternAtom(display, "_MOTIF_WM_HINTS", true);
XChangeProperty(display,window,property,property,32,PropModeReplace,(unsigned char *)&hints,5);
XMapWindow(display, window);
到目前为止,我已经收集到原子是一种类似于窗口和显示的标识符,但我不知道提示结构或“_MOTIF_WM_Hints”来自哪里。有人能给我解释一下这些代码吗?提前谢谢你,呃。很难找到任何一种看起来像官方的标准,但是 _MOTIF_WM_Hits属性似乎确实来自。。。Motif工具包(好的,你可以 我猜:-))。 看 警告:下面的内容是不完整的,但我希望能有所启发 XMNMWM装饰、XmNmwmFunctions和XmNmwmInputMode的文档 工具箱的函数表明该属性是各种类型的位掩码 用于控制外观、功能(调整大小、移动等)和输入的值 窗口管理器应向窗口提供/提供的模式。 看,或者 属性是整个X11的一部分。一个窗口可以有任意数量的 在其上定义的属性。属性有名称,但设置/获取 属性是通过“atom”(排序标识符)完成的,以避免发送 每一个get/set调用的整个字符串。 看 当前窗口管理器(如果有)可以对窗口属性作出反应 通过设置适当的事件筛选器并对PropertyNotify执行操作进行更改 事件,或者只是在映射(或移动)窗口时检查其属性。如果窗口管理器知道_MOTIF_WM_HINT属性,它将 解释这些,然后(希望)做你想做的事。 (注意:我不完全确定该特权是否转移给了窗口。) 管理器,或者其他窗口是否可以侦听这些“PropertyNotify”事件 当然,这实际上与你的问题有关。) 因此,只要窗口管理器知道,您的代码就可以正常工作 关于_MOTIF_WM_HINTS属性 你从获取原子开始 (标识符/快捷方式),并通过XChangeProperty()设置其值 在通过MapWindow()实际绘制窗口之前(不确定是否会 如果在MapWindow()之后执行此操作,则可能需要执行此操作,这取决于您的窗口 经理) [编辑:将.decorations部分设置为零将清除所有装饰位,因此这要求窗口管理器从本质上让您的边框远离地狱。] 我想不出什么“官方”的结构定义。它在openmotif-2.3.3发行版的lib/X11/MwmUtils.h中定义。不确定.flags条目是如何使用的(找不到适用于我一生的代码:-/),但我怀疑它是用来指示您正在处理的{decoration,function,inputMode}“sub properties”中的哪一个。(别相信我的话。) 作为补充说明,使用_MOTIF_WM_提示可能不是最好的选择 现在。你看过freedesktop上的和其他信息/标准/草案了吗?我敢打赌,大多数“现代”的窗口管理器/桌面环境/厨房水槽将倾向于坚持这一点,而不是保持与Motif的向后兼容性。我想这一切都取决于你的编码目的
感谢阅读:-)这是您的来源,还是您的目的地?这是我的源代码的一个小片段。提示结构在别处声明,但为了清晰起见,这里显示了它。我读过那篇文章,它没有解释提示结构(“我认为这个结构来自Motif,但我不确定”…)是的,它实际上不是我的来源,很好。你运行的窗口管理器负责遵守或不遵守这个提示。如果它尊重它,那么如果窗口设置了此提示,那么窗口管理器将从窗口移除窗口装饰。感谢所有这些提示,我将查看您给我的所有链接!