Xlib

Xlib
開發者X.Org基金会
首次发布大约1985年
当前版本
  • 1.8.9 (2024年4月5日;穩定版本)[1]
編輯維基數據鏈接
源代码库 編輯維基數據鏈接
编程语言C
类型
许可协议
編輯維基數據鏈接
网站www.x.org, 文档: www.x.org/releases/current/doc/libX11/libX11/libX11.html

Xlib是一種X Window System協定的用戶端,以C語言撰寫。其功能是與X server溝通。這樣的功能可以讓程式人員撰寫程式時,毋須了解其協定的細節。但甚少應用程式會直接使用Xlib;通常是透過其他的函式庫來呼叫Xlib用以提供部件工具箱(widget toolkits):

Xlib及其應用

Xlib發表於1985年,目前使用在許多的Unix-like作業系統上。

目前XCB有可能取代Xlib.

資料型別[编辑]

Xlib主要的資料型別是Display[2]結構。

範例[编辑]

下面是一個XLib的範列,產生一個視窗。

/*   Simple Xlib application drawing a box in a window.   gcc input.c -o output -lX11 */  #include <X11/Xlib.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdbool.h>  int main(void) {   Display *d;   Window w;   XEvent e;   char *msg = "Hello, World!";   int s;    bool done = false;    /* open connection with the server */   d = XOpenDisplay(NULL);   if (d == NULL) {     fprintf(stderr, "Cannot open display\n");     exit(1);   }    s = DefaultScreen(d);    /* create window */   w = XCreateSimpleWindow(d, RootWindow(d, s), 10, 10, 640, 480, 0, 			  BlackPixel(d, s), WhitePixel(d, s));    /* register interest in the delete window message */   Atom wmDeleteMessage = XInternAtom(d, "WM_DELETE_WINDOW", False);   XSetWMProtocols(d, w, &wmDeleteMessage, 1);       /* select kind of events we are interested in */   XSelectInput(d, w, ExposureMask | KeyPressMask | StructureNotifyMask);    /* map (show) the window */   XMapWindow(d, w);    /* event loop */   while (!done) {     XNextEvent(d, &e);     /* draw or redraw the window */     if (e.type == Expose) {       XFillRectangle(d, w, DefaultGC(d, s), 20, 20, 10, 10);       XDrawString(d, w, DefaultGC(d, s), 50, 50, msg, strlen(msg));     }      /* exit on key press */     switch(e.type){            case KeyPress:       XDestroyWindow(d, w);       break;      case DestroyNotify:       done = true;       break;      case ClientMessage:       if (e.xclient.data.l[0] == wmDeleteMessage){ 	done = true;       }       break;           }   }    /* close connection to server */   XCloseDisplay(d);    return 0; } 

注釋[编辑]

  1. ^ https://lists.x.org/archives/xorg-announce/2024-April/003501.html; 检索日期: 2024年4月7日; 作者姓名字符串: Alan Coopersmith.
  2. ^ Display Structure on freedesktop CVS. Tip search for: typedef struct _XDisplay Display. [2009-07-09]. (原始内容存档于2008-01-31). 

外部連結[编辑]