Sistemas operativos modernos
#include <X11/Xlib.h> #include <X11/Xutil.h> main(int argc, char *argv[]) { Display disp; Window win; G C go; XEvent event; int running = 1; disp = XOpenDisplay(''display_name"); win = XCreateSimpleWindow(disp, ...); XSetStandardProperties(disp,...); go = XCreateGC(disp, win, 0, 0); XSelectlnput(disp, win, ButtonPressMask /* identificador de servidor V /* identificador de ventana */ /* identificador de contexto gráfico */ r memoria para un suceso */ /* conecta con el servidor X V /* asigna memoria para nueva ventana V r informa al adm. de ventanas sobre la ventana*/ /* crea contexto gráfico */ KeyPressMask I ExposureMask); XMapRaised(disp, win); while (running) { XNextEvent(disp, &event); switch (event.type) { case Expose: case ButtonPress: case Keypress: } } XFreeGC(disp, gc); XDestroyWindow(disp, win); XCIoseDisplay(disp): /* despliega la ventana; envía el suceso Expose V /* obtiene el siguiente suceso */ break break break r redibuja la ventana '/ r procesa el clic de ratón 7 /* procesa las entradas de teclado /* libera el contexto gráfico V /* libera la memoria de ventana */ /* quita la conexión de red V Figura 5'46. Estructura de un programa de aplicación de X Window. La llamada a XCreateGC crea un contexto gráfico en el que se guardan propiedades de la ventana. En un programa más completo, se les podría asignar valores iniciales aquí. La siguien te instrucción, la llamada a XSelectInput, indica al servidor X los sucesos que está dispuesto a manejar el programa. En este caso le interesan los clics de ratón, las pulsaciones de teclas y las ventanas que se destapan. En la práctica, un programa real también estaría interesado en otros sucesos. Por último, la llamada a XMapRaised asigna la nueva ventana sobre la pantalla como ventana en primer plano. En este momento, la ventana ya puede verse en la pantalla. El ciclo principal consta de dos instrucciones y es mucho más sencillo, lógicamente, que el ciclo correspondiente en Windows. La primera instrucción obtiene un suceso y la segunda lo despacha según su tipo, para que se procese. Cuando algún suceso indica que el programa ter minó, se asigna Oa running y el ciclo termina. Antes de terminar, el programa libera el contex to gráfico, la ventana y la conexión.
RkJQdWJsaXNoZXIy MjI4NDcx