Xexample.c
From Free media library
{{#switch: |Category = Pages in this category have | This page has }} been marked for eventual deletion.
{{#switch: |Category= They have
| It has}} been identified as reference material per the exclusion guidelines, which the community has decided to exclude from Wikisource (see "Inclusion of reference data on Wikisource"). These works will be phased out gradually; if you have found this page by following a link from another page, please go back and remove that link.{{#switch::Xexample.c
|Category:Deletion requests/Reference data = |Wikisource:Scriptorium = |
}}
/* Simple Xlib application that draws a box in a window and
* terminate when the user presses a key. */
#include<X11/Xlib.h>
int main() {
Display *d;
int s;
Window w;
XEvent e;
/* open connection with the server; this will also generate
* a request for creation of a default graphic context; it
* may also generate a request for existence of some
* extensions */
d=XOpenDisplay(NULL);
if(d==NULL) {
printf("Cannot open display\n");
exit(1);
}
s=DefaultScreen(d);
/* create a window; while the function returns the
* identifier of a window, this identifier is actually
* chosen by the library, which is part of the client, not
* by the server */
w=XCreateSimpleWindow(d, RootWindow(d, s), 10, 10, 100, 100, 1,
BlackPixel(d, s), WhitePixel(d, s));
/* select kind of events we are interested in; this will
* generate a request for changing the window attributes */
XSelectInput(d, w, ExposureMask | KeyPressMask);
/* request the window to be mapped (shown on the screen) */
XMapWindow(d, w);
/* event loop (wait for event, take the appropriate action */
while(1) {
/* this instruction checks for events in the local queue,
* blocking if not event is present */
XNextEvent(d, &e);
/* if the event is an expose event, redraw the box */
if(e.type==Expose)
XFillRectangle(d, w, DefaultGC(d, s), 20, 20, 10, 10);
/* this particular client terminates if a key is pressed */
if(e.type==KeyPress)
break;
}
/* close connection to server */
XCloseDisplay(d);
return 0;
}