gpt4 book ai didi

c++ - 在给定 XWindow* 的 X (*nix) 上实现剪贴板功能?

转载 作者:行者123 更新时间:2023-11-30 18:03:33 25 4
gpt4 key购买 nike

我正在使用 Allegro5 API 创建窗口并管理它。它允许我访问它使用 XCreateWindow 创建的 XWindow

我可以访问 d->window 但仅此而已。由此,有没有一种方法可以与发送到此窗口的 XEvent 进行交互?我想实现剪贴板功能。我只是不确定如何处理 XSelection 事件。

最佳答案

您需要创建the xevent loop ,并处理特定的xeventsHere是一个 xlib hello world 示例,这就是您可以做到的。

示例复制自 here :

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

int main()
{
Display *dpy;
Window rootwin;
Window win;
Colormap cmap;
XEvent e;
int scr;
GC gc;


if(!(dpy=XOpenDisplay(NULL))) {
fprintf(stderr, "ERROR: could not open display\n");
exit(1);
}

scr = DefaultScreen(dpy);
rootwin = RootWindow(dpy, scr);
cmap = DefaultColormap(dpy, scr);


win=XCreateSimpleWindow(dpy, rootwin, 1, 1, 100, 50, 0,
BlackPixel(dpy, scr), BlackPixel(dpy, scr));

XStoreName(dpy, win, "hello");


gc=XCreateGC(dpy, win, 0, NULL);
XSetForeground(dpy, gc, WhitePixel(dpy, scr));

XSelectInput(dpy, win, ExposureMask|ButtonPressMask);

XMapWindow(dpy, win);

while(1) {
XNextEvent(dpy, &e);
if(e.type==Expose && e.xexpose.count<1)
XDrawString(dpy, win, gc, 10, 10, "Hello World!", 12);
else if(e.type==ButtonPress) break;
}

XCloseDisplay(dpy);
}

要构建,请创建一个 Makefile:

all: hello

hello: hello.o
cc -o hello -Wall -L/usr/X11R6/lib -lX11 hello.o

hello.o: hello.c
cc -o hello.o -Wall -I/usr/X11R6/include -c hello.c

关于c++ - 在给定 XWindow* 的 X (*nix) 上实现剪贴板功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8281081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com