小编use*_*516的帖子

X11 - 在叠加窗口上绘制

我想在屏幕上的特定像素处绘制简单的图元(类似于这个问题).为了做到这一点,我使用窗口管理器的叠加窗口绘制所有窗口的顶部.我可以看到我正在绘制的形状和鼠标事件通过,但我没有看到例如窗口移动位于叠加窗口下方(除非我杀死我的应用程序).我是Xlib编程的新手,sry可能会问一个简单的问题.

#include <assert.h>
#include <stdio.h>
#include <X11/Xlib.h>

#include <X11/extensions/Xcomposite.h>
#include <X11/extensions/Xfixes.h>
#include <X11/extensions/shape.h>

#include <cairo.h>
#include <cairo-xlib.h>

Display *d;
Window overlay;
Window root;
int width, height;

void
allow_input_passthrough (Window w)
{
    XserverRegion region = XFixesCreateRegion (d, NULL, 0);

    XFixesSetWindowShapeRegion (d, w, ShapeBounding, 0, 0, 0);
    XFixesSetWindowShapeRegion (d, w, ShapeInput, 0, 0, region);

    XFixesDestroyRegion (d, region);
}

void
prep_overlay (void)
{
    overlay = XCompositeGetOverlayWindow (d, root);
    allow_input_passthrough (overlay);
}

void draw(cairo_t *cr) {
    int quarter_w = width / 4; …
Run Code Online (Sandbox Code Playgroud)

c linux x11

8
推荐指数
2
解决办法
5418
查看次数

标签 统计

c ×1

linux ×1

x11 ×1