我想为dwm写一个补丁,它将在窗口的边框上添加区域,在那里我可以放置标题和装饰(如关闭,隐藏,全屏按钮)。Xlib提供了很多可能的方法来实现这一点,但我不确定其中一些是否可行。到目前为止最简单的是:
如果不可能,我会尝试通过以下方式创建标题栏:
或
如果有多个解决方案,最好的一个是使用最少内存和工作最快的一个。
qlzsbp2j1#
这通常是通过创建一个比你请求的窗口大一点的窗口来完成的(例如,通过窗口管理器),然后重新设置你的窗口的父级,使之成为你要在其中绘制框架的窗口的子级。然后,您可以设置一个剪辑区域,以排除绘画例程中孩子要占用的区域,并在其上绘制边框,标题,按钮和您喜欢的所有内容。你可以避免在孩子身上画画,如果你愿意在所有的绘画程序中指定不包括劣等儿童。因此,将自动为您创建剪切区域。另一种(不推荐)方法是调整窗口大小来为框架分配空间,但这需要内部客户端代码知道框架正在使用的部分,我认为这不是您想要的。
1条答案
按热度按时间qlzsbp2j1#
这通常是通过创建一个比你请求的窗口大一点的窗口来完成的(例如,通过窗口管理器),然后重新设置你的窗口的父级,使之成为你要在其中绘制框架的窗口的子级。然后,您可以设置一个剪辑区域,以排除绘画例程中孩子要占用的区域,并在其上绘制边框,标题,按钮和您喜欢的所有内容。你可以避免在孩子身上画画,如果你愿意在所有的绘画程序中指定不包括劣等儿童。因此,将自动为您创建剪切区域。
另一种(不推荐)方法是调整窗口大小来为框架分配空间,但这需要内部客户端代码知道框架正在使用的部分,我认为这不是您想要的。