Xlib
维基百科,自由的百科全书
Xlib 是一種 X Window System 協定的用戶端,以C語言撰寫。其功能是與 X server 溝通. 這樣的功能可以讓程式人員撰寫程式時, 毋須了解其協定的細節。但甚少應用程式會直接使用 Xlib; 通常是透過其他的函式庫來呼叫 Xlib 用以提供部件工具箱(widget toolkits):
Xlib 發表於 1985年,目前使用在許多的 Unix-like作業系統上。
目前XCB有可能取代 Xlib.
目录 |
資料型別 [编辑]
Xlib主要的資料型別是Display[1]結構。
範例 [编辑]
下面是一個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; }
注釋 [编辑]
- ^ Display Structure on freedesktop CVS. Tip search for: typedef struct _XDisplay Display.
外部連結 [编辑]
- Xlib Programming Manual
- Manual pages for all Xlib functions
- Kenton Lee's pages on X Window and Motif
- A short tutorial on Xlib
- A longer tutorial on Xlib
- Using Xlib for creating a screensaver module
- Simple X11 toolkit for learning Xlib
|
||||||||||||||||||||