Correction de rafraich.c

/* rafraichit le contenu de la fenetre apres masquage */

#include <stdio.h>
#include <X11/Xlib.h>

GC      gc; 
Display *display; 
int     screen; 
Window  win, root; 
unsigned long white_pixel, black_pixel; 
int tab_button[10][2];
int i, pos_tab;

main() { 
    for (i = 0; i < 10; ++i) 
      tab_button[i][0] = -1;
    pos_tab = 9;
    if ((display = XOpenDisplay ("")) == NULL) { 
      fprintf (stderr, "Can't open Display\n"); 
      exit (1); 
    } 
    gc = DefaultGC (display, screen); 
    screen = DefaultScreen (display); 
    root = RootWindow (display, screen); 
    white_pixel = WhitePixel (display, screen); 
    black_pixel = BlackPixel (display, screen); 
    win = XCreateSimpleWindow (display, root,  
			       0, 0, 100, 90, 2, black_pixel, white_pixel); 
    XSelectInput (display, win, ExposureMask | ButtonPressMask); 
    XStoreName (display, win, "rafraich"); 
    XMapWindow (display, win); 
 
    for (;;) { 
      XEvent ev; 
      XNextEvent (display, &ev); 
      switch (ev.type) { 
      case Expose :             
	XDrawString (display, win, gc, 10, 30, "Hello !", 7); 
	for (i = 0; i < 10; ++i) 
	  if (tab_button[i][0] > -1)
	    XDrawString (display, win, gc, tab_button[i][0], tab_button[i][1],
			 "ici", 3);
	break; 
      case ButtonPress :
	XDrawString (display, win, gc, ev.xbutton.x, ev.xbutton.y, "ici", 3);
	pos_tab = (pos_tab + 1) % 10;
	tab_button[pos_tab][0] = ev.xbutton.x;
	tab_button[pos_tab][1] = ev.xbutton.y;
	break;
      default : 
	break;            
      } 
    } 
} 
 

chapitre de l'exercice index général fonctions de la XLib événements types dans XLib