Linux XCB

X协议的c语言绑定(XCB: The X protocol C-language Binding) 是一种替代Xlib具有占用空间小,延迟隐藏,直接访问协议,提高线程的支持,和可扩展性

介绍

这个手册是用来介绍给想用XCB library进行编程需要的人们。 像使用Xlib library来使用XCB,因为不是大多数的编程人员都想要写X的应用程序。而更多的开发者是想使用更高级的GUI 开发工具,如Motif,LessTiff,GTK,Qt,EWL,or ETK 或者更高级的使用library Cairo来进行绘制。虽然, 不是所有的XCB的基础都很复杂,了其他一些库的上层的东西也不是坏事。

在读完这个手册之后,一个人可以写简单图形程序而不是好看的图形界面(至少是相对简单的)。在写应用程序之前,这个先前的关于上面库的了解是更有必要的。

什么是XCB,为什么它为存在?

XCB("X C Bing")是一个低级的api给X window server。 XCB是Xlib的一个替代产物,Xlib曾是多年以来标准的C绑定的给X Window System 协议的库。Xlib表现得很优秀,但是对于应用程序来说也有很多不理想的地方,例如:

  • 小平台: Xlib包含在大段的代码,精简起来十分困难
  • 延迟隐藏:Xlib需要有效的同步回复:他们会一直阻塞直到获取到结果,不管这个结果是否立即需要
  • 直接访问协议:Xlib需要大量的缓存,层和相似的优化。由于这个通性,它很难简单的发出特定的X 协议请求和处理特定的响应
  • 线程化应用程序:Xlib尽量会支持多线程,它的api的容错性较差
  • 新的扩展:Xlib的底部架构提供了有限的支持给新的X的扩展客户端代码。

XCB被设计用来解决上述的问题,目前已经解决的有:

  • 工具包的实现
  • 直接进行协议级的编程
  • 轻量级的调用常用的Xlib api.

Xcb 的全称是 X 协议 C 库,它是一种让在 X Window 活动图形框架中的 Linux 中的程序更易于使用。Xcb 是一种为原生 X 协议提供一个高级接口的库它允许用户使用函数调用,而不是手动构造消息来访问 X 协议Xcb 的特点是它是轻量级的,低维护,运行速度快。Xcb 使用在链接器中编译的函数库来缩短天生 X 协议消息的小编程意味,它让用户可以不必担心包装 X 协议消息的技术细节。

在开始使用 Xcb 之前,我们需要一种方法来安装它。如果你使用的是 Ubuntu,你可以使用下面的命令来安装:

“`bash

sudo apt-get install libxcb1-dev

安装之后,我们就可以开始使用 Xcb。要想创建图形界面,我们首先需要做的就是创建 xcb 的连接:

```C
xcb_connection_t *conn = xcb_connect(NULL, NULL);

 连接建立之后,我们还需要获取窗口:

“`C
xcb_window_t window = xcb_generate_id(conn);
uint32_t value_list[] = {600, 400};
xcb_create_window(conn,
XCB_COPY_FROM_PARENT,
window,
screen->root,
0, 0,
value_list[0], value_list[1],
0,
XCB_WINDOW_CLASS_INPUT_OUTPUT,
screen->root_visual,
0, NULL );

在窗口创建之后,我们需要把它显示在屏幕上:

```C
xcb_map_window(conn, window);
xcb_flush(conn);

经过以上操作,我们就创建了一个空白窗口。现在,如果我们想要把它绘制成我们想要的样子,我们可以使用 Xcb 的一些其他功能。

另一种在 Linux 中开发图形界面的方法是使用 Qt。Qt 是一个开源的 C++ 框架,它的优势在于它的易用性,以及它的强大的图形功能。此外,它还支持跨平台开发,因此也被用作在 Linux 下开发图形界面的工具。

猜你喜欢

转载自blog.csdn.net/fuhanghang/article/details/130129691
今日推荐