Window creation/X11: Difference between revisions

Added PicoLisp
(removed "Icon and Unicon" because the task is about interacting with the X server in a low level way with for example Xlib or XCB, here this example is the same than on the page "Window_creation")
(Added PicoLisp)
Line 165:
{{omit from|TI-83 BASIC}} {{omit from|TI-89 BASIC}} <!-- Does not have a local X server or network access. -->
{{omit from|PureBasic}}
 
=={{header|PicoLisp}}==
The following script works in the 32-bit version, using inlined C code
<lang PicoLisp>#!bin/picolisp lib.l
 
(load "lib/misc.l" "lib/gcc.l")
 
(gcc "x11" '("-lX11") 'simpleWin)
 
#include <X11/Xlib.h>
 
any simpleWin(any ex) {
any x = cdr(ex);
int dx, dy;
Display *disp;
int scrn;
Window win;
XEvent ev;
 
x = cdr(ex), dx = (int)evCnt(ex,x);
x = cdr(x), dy = (int)evCnt(ex,x);
x = evSym(cdr(x));
if (disp = XOpenDisplay(NULL)) {
char msg[bufSize(x)];
 
bufString(x, msg);
scrn = DefaultScreen(disp);
win = XCreateSimpleWindow(disp, RootWindow(disp,scrn), 0, 0, dx, dy,
1, BlackPixel(disp,scrn), WhitePixel(disp,scrn) );
XSelectInput(disp, win, ExposureMask | KeyPressMask | ButtonPressMask);
XMapWindow(disp, win);
for (;;) {
XNextEvent(disp, &ev);
switch (ev.type) {
case Expose:
XDrawRectangle(disp, win, DefaultGC(disp, scrn), 10, 10, dx-20, dy-20);
XDrawString(disp, win, DefaultGC(disp, scrn), 30, 40, msg, strlen(msg));
break;
case KeyPress:
case ButtonPress:
XCloseDisplay(disp);
return Nil;
}
}
}
return mkStr("Can't open Display");
}
/**/
 
(simpleWin 300 200 "Hello World")
(bye)</lang>
 
=={{header|Python}}==
Anonymous user