xhola_mundo.c
1
2
3
4
5
6
7
8
9
10 #include <X11/Xlib.h>
11 #include <X11/Xutil.h>
12
13 #define TRUE 1
14 #define FALSE 0
15
16 char hola[] = "hola_mundo";
17 char el_nombre_del_icono[] = "Holai";
18 char el_nombre_de_la_ventana[] = "hola";
19
20 int main(int argc, char *argv[])
21 {
22 Display *el_display;
23 Window la_ventana;
24 GC el_gc;
25 XEvent el_evento;
26 KeySym la_tecla;
27 XSizeHints el_hint;
28 int el_screen;
29 unsigned long el_frente,
30 el_fondo;
31 char el_buffer[8];
32 int contador_teclas;
33 int terminar;
34
35
36 el_display = XOpenDisplay("");
37
38
39 el_screen = DefaultScreen(el_display);
40 el_fondo = WhitePixel( el_display, el_screen);
41 el_frente = BlackPixel( el_display, el_screen);
42 el_hint.x = 100;
43 el_hint.y = 100;
44 el_hint.width = 275;
45 el_hint.height = 120;
46 el_hint.flags = PPosition | PSize;
47 la_ventana = XCreateSimpleWindow ( el_display, DefaultRootWindow(el_display),
48 el_hint.x, el_hint.y, el_hint.width, el_hint.height,
49 7, el_frente, el_fondo);
50
51
52 XSetStandardProperties(el_display, la_ventana, el_nombre_de_la_ventana,
53 el_nombre_del_icono, None, argv, argc, &el_hint);
54
55
56 el_gc = XCreateGC( el_display, la_ventana, 0, 0);
57 XSetBackground( el_display, el_gc, el_fondo);
58 XSetForeground( el_display, el_gc, el_frente);
59
60
61 XSelectInput(el_display, la_ventana, (KeyPressMask | ExposureMask));
62
63
64 XMapRaised(el_display, la_ventana);
65
66
67 terminar = FALSE;
68 while( !terminar )
69 {
70 XNextEvent(el_display, &el_evento);
71 switch(el_evento.type)
72 {
73 case Expose:
74 if(el_evento.xexpose.count == 0)
75 {
76 XDrawImageString(el_evento.xexpose.display,
77 el_evento.xexpose.window, el_gc,
78 105, 65, hola, strlen(hola));
79 }
80 break;
81 case MappingNotify:
82 XRefreshKeyboardMapping(&el_evento);
83 break;
84 case KeyPress:
85 contador_teclas = XLookupString(&el_evento, el_buffer, 8, &la_tecla, 0);
86 if( (contador_teclas == 1) && (el_buffer[0] == 'q'))
87 terminar = TRUE;
88 }
89 }
90
91 XFreeGC(el_display, el_gc);
92 XDestroyWindow(el_display, la_ventana);
93 XCloseDisplay(el_display);
94 return 0;
95 }
CategoryLenguajeC | CategoryProgramacion