热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

c–Xlib如何(删除窗口装饰)工作?

以下代码如何删除窗口边框?otethestructisdeclaredelsewhere,isherejustforclarity.codeisfrom[http:onyobrya

以下代码如何删除窗口边框?

//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);

到目前为止,我已经收集到Atom是一种类似于Window和Display的标识符,但我无法弄清楚Hints结构或“_MOTIF_WM_HINTS”的来源.谁能为我解释所有这些代码?在此先感谢,ell.

解决方法:

很难通过任何形式的“官方”标准或类似标准来实现
_MOTIF_WM_HINTS属性似乎来自… Motif工具包(好吧,你
猜测:-)).
见the MotifZone site.

警告:接下来的内容是不完整的,但我希望能有所启发.

XmNmwmDecorations,XmNmwmFunctions和XmNmwmInputMode的文档
工具包的功能表明该属性是各种位掩码
用于控制外观,功能(调整大小,移动,…)和输入的值
窗口管理器应该提供/提供给窗口的模式.
见man vendorshell或Oreilly Motif reference books, Vol6a chapter 16.

属性是整个X11的一部分.一个窗口可以有任意数量的窗口
在其上定义的属性.属性有一个名称,但设置/获取
属性是通过“atom”(排序标识符)完成的,以避免发送
每次获取/设置调用的线上的整个字符串.
见Properties and Atoms

当前窗口管理器(如果有)可以对窗口属性做出反应
通过设置适当的事件过滤器并对PropertyNotify进行操作来进行更改
事件,或者只是检查窗口在映射(或移动或其他)时所具有的属性.如果窗口管理器知道_MOTIF_WM_HINT属性,它就会
解释那些并(希望)做你想做的事.
(注意:我并不确定这个特权是否已下放到窗口中
经理,或者如果其他窗口可以收听那些“PropertyNotify”事件.不
确定这实际上与你的问题有关.)

所以只要您的窗口管理器知道,您所使用的代码就可以正常工作
关于_MOTIF_WM_HINTS属性.

你从获得原子开始
XInternAtom的(标识符/快捷方式),并通过XChangeProperty()设置其值
在通过MapWindow()实际绘制窗口之前(不确定是否会这样)
如果你在MapWindow()之后执行它,那可能取决于你的窗口
经理).

[编辑:将.decorations部分设置为零会清除所有装饰位,因此这要求窗口管理器基本上单独留下你的边界.]

我无法想出具有该结构定义的“官方”.它在openmotif-2.3.3发行版的lib / X11 / MwmUtils.h中定义.不确定如何使用.flags条目(找不到我生活中的代码: – /)但我怀疑它用于表示你是哪个{decoration,function,inputMode}“sub-properties”作用于. (不要相信我的话.)

作为旁注,使用_MOTIF_WM_HINTS可能不是您的最佳选择权
现在.您是否在freedesktop上查看过Extended Window Manager hints

specification以及其他信息/标准/草稿?我打赌大多数“现代”窗口管理器/桌面环境/厨房水槽都倾向于坚持这一点,而不是保持与Motif的向后兼容性.一切都取决于我猜你编码的内容.

谢谢阅读 :-)


推荐阅读
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
author-avatar
N021039
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有