热门标签 | 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的向后兼容性.一切都取决于我猜你编码的内容.

谢谢阅读 :-)


推荐阅读
  • 在Delphi7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本。定义如下:1234 ... [详细]
  • MySQL初级篇——字符串、日期时间、流程控制函数的相关应用
    文章目录:1.字符串函数2.日期时间函数2.1获取日期时间2.2日期与时间戳的转换2.3获取年月日、时分秒、星期数、天数等函数2.4时间和秒钟的转换2. ... [详细]
  • 最近遇到了一道关于哈夫曼树的编程题目,需要在下午之前完成。题目要求设计一个哈夫曼编码和解码系统,能够反复显示和处理多个项目,直到用户选择退出。希望各位大神能够提供帮助。 ... [详细]
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom"echarts";4、如果用到map(地图),还 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • 单片微机原理P3:80C51外部拓展系统
      外部拓展其实是个相对来说很好玩的章节,可以真正开始用单片机写程序了,比较重要的是外部存储器拓展,81C55拓展,矩阵键盘,动态显示,DAC和ADC。0.IO接口电路概念与存 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 在尝试将 mysqldump 文件加载到新的 MySQL 服务器时,遇到因使用保留关键字 'table' 导致的语法错误。 ... [详细]
  • PBO(PixelBufferObject),将像素数据存储在显存中。优点:1、快速的像素数据传递,它采用了一种叫DMA(DirectM ... [详细]
  • 第14周实践项目(4)-验证平衡二叉树
    问题**Copyright(c)2015,烟台大学计算机学院*Allrightsreserved.*文件名称:test.cpp*作者:王敏*完成日 ... [详细]
  • 本文介绍了Go语言中正则表达式的基本使用方法,并提供了一些实用的示例代码。 ... [详细]
  • 本文详细介绍了 Spark 中的弹性分布式数据集(RDD)及其常见的操作方法,包括 union、intersection、cartesian、subtract、join、cogroup 等转换操作,以及 count、collect、reduce、take、foreach、first、saveAsTextFile 等行动操作。 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • C#实现文件的压缩与解压
    2019独角兽企业重金招聘Python工程师标准一、准备工作1、下载ICSharpCode.SharpZipLib.dll文件2、项目中引用这个dll二、文件压缩与解压共用类 ... [详细]
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社区 版权所有