xhola_mundo.c

   1 /**
   2  * xhola_mundo.c
   3  *
   4  * @author Luis Alejandro Bernal Romero
   5  *
   6  * Programa de ejemplo de como programar en X
   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         /* Establecimiento de la conexion. */
  36         el_display      = XOpenDisplay("");
  37 
  38         /* Preparacion y creacion de una ventana. */
  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         /* Notificacion a las demas aplicaciones. */
  52         XSetStandardProperties(el_display, la_ventana, el_nombre_de_la_ventana, 
  53                         el_nombre_del_icono, None, argv, argc, &el_hint);
  54 
  55         /* Creacion del contexto grafico. */
  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         /* Seleccion del tipo de suceso de entrada a procesar. */
  61         XSelectInput(el_display, la_ventana, (KeyPressMask | ExposureMask));
  62 
  63         /* Visualizacion de las ventanas. */
  64         XMapRaised(el_display, la_ventana);
  65 
  66         /* Ejecucion del ciclo principal. */
  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

LenguajeC/Programas/xhola_mundo.c (last edited 2008-04-20 14:38:32 by localhost)