Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Xlib这(移除窗户装饰)是如何工作的?_C++_Linux_Xlib_Window Managers - Fatal编程技术网

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,但我不确定”…)是的,它实际上不是我的来源,很好。你运行的窗口管理器负责遵守或不遵守这个提示。如果它尊重它,那么如果窗口设置了此提示,那么窗口管理器将从窗口移除窗口装饰。感谢所有这些提示,我将查看您给我的所有链接!