diff options
author | EliteTK <tomasz.kramkowski@gmail.com> | 2014-05-24 13:05:18 +0100 |
---|---|---|
committer | EliteTK <tomasz.kramkowski@gmail.com> | 2014-05-24 13:05:18 +0100 |
commit | 39c3721ca16d2dfdbd8e5488e7d1f57a6d54310e (patch) | |
tree | fcec9d101136a5b004ffc3fc1cc6a66dc848a6e5 /xlibtest.c | |
parent | 5bbcb1f542c239ce1e9b5a7d3c7214a7bf001d6a (diff) | |
parent | a530bad7a6ea2778129db0dc26c446d9f6df6ddd (diff) | |
download | c-stuff-39c3721ca16d2dfdbd8e5488e7d1f57a6d54310e.tar.gz c-stuff-39c3721ca16d2dfdbd8e5488e7d1f57a6d54310e.tar.xz c-stuff-39c3721ca16d2dfdbd8e5488e7d1f57a6d54310e.zip |
Merge branch 'master' of https://github.com/EliteTK/c-stuff
Merge
Diffstat (limited to 'xlibtest.c')
-rw-r--r-- | xlibtest.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/xlibtest.c b/xlibtest.c new file mode 100644 index 0000000..adcbd26 --- /dev/null +++ b/xlibtest.c @@ -0,0 +1,59 @@ +/* + * 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> + +int main(int argc, char **argv) +{ + Display *display; + Window window; + XEvent event; + char *msg = "Hello, World!"; + int s; + + /* open connection with the server */ + display = XOpenDisplay(NULL); + if (display == NULL) + { + fprintf(stderr, "Cannot open display\n"); + exit(1); + } + + s = DefaultScreen(display); + + /* create window */ + window = XCreateSimpleWindow(display, RootWindow(display, s), 10, 10, 200, 200, 1, + BlackPixel(display, s), WhitePixel(display, s)); + + /* select kind of events we are interested in */ + XSelectInput(display, window, ExposureMask | KeyPressMask); + + /* map (show) the window */ + XMapWindow(display, window); + + /* event loop */ + for (;;) + { + XNextEvent(display, &event); + + /* draw or redraw the window */ + 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)); + } + /* exit on key press */ + if (event.type == KeyPress) + break; + } + + /* close connection to server */ + XCloseDisplay(display); + + return 0; +} |