linux下 X11桌面 一个C语言调用Xlib创建窗口的小列子
linux-dash
A beautiful web dashboard for Linux
项目地址:https://gitcode.com/gh_mirrors/li/linux-dash
免费下载资源
·
一个与linux下使用Xlib进行窗口编程的小例子,作为一个刚开始了解Xlib的初学者,应该从一个小例子开始,从编译,运行,再到逐步深入...,根据X11协议原理,其实我们所编写的程序都是Xclient程序,Xserver负责接收硬件事件,Xclient负责计算,结果会反馈给Xserver,Xserver来负责与硬件沟通,例如显示Xclient绘制的图形到显示器.
具体编译:gcc x11.c -o output -I/usr/X11R6/include -L/usr/X11R6/lib -lX11
源码如下:
/*
* 下边是编译命令
* gcc x11.c -o output -I/usr/X11R6/include -L/usr/X11R6/lib -lX11
*/
#include <X11/Xlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
Display *display;
Window window;
XEvent event;
char *msg = "你好 ,这是一个测试窗口!";
int s;
/* 与Xserver建立连接 */
display = XOpenDisplay(NULL);
if (display == NULL)
{
fprintf(stderr, "Cannot open display\n");
exit(1);
}
s = DefaultScreen(display);
/* 创建一个窗口 */
window = XCreateSimpleWindow(display, RootWindow(display, s), 10, 10, 200, 200, 1,
BlackPixel(display, s), WhitePixel(display, s));
/* 选择一种感兴趣的事件进行监听 */
XSelectInput(display, window, ExposureMask | KeyPressMask);
/* 显示窗口 */
XMapWindow(display, window);
/* 事件遍历 */
for (;;)
{
XNextEvent(display, &event);
/* 绘制窗口或者重新绘制 */
if (event.type == Expose)
{
XFillRectangle(display, window, DefaultGC(display, s), 20, 20, 10, 10);
XDrawString(display, window, DefaultGC(display, s), 50, 50, msg, strlen(msg));
}
/* 当检测到键盘按键,退出消息循环 */
if (event.type == KeyPress)
break;
}
/* 关闭与Xserver服务器的连接 */
XCloseDisplay(display);
return 0;
}
GitHub 加速计划 / li / linux-dash
6
1
下载
A beautiful web dashboard for Linux
最近提交(Master分支:4 个月前 )
186a802e
added ecosystem file for PM2 4 年前
5def40a3
Add host customization support for the NodeJS version 4 年前
更多推荐
已为社区贡献2条内容
所有评论(0)