Correction de debogue.c

/* programme synchonise pour de-boguage */

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

GC      gc; 
Display *display; 
int     screen; 
Window  win, wim, root; 
unsigned long white_pixel, black_pixel; 

main() {
  if ((display = XOpenDisplay ("")) == NULL) { 
    fprintf (stderr, "Can't open Display\n"); 
    exit (1); 
  } 
  gc = DefaultGC (display, screen); 
  XSynchronize (display, 1);
  screen = DefaultScreen (display); 
  root = RootWindow (display, screen); 
  white_pixel = WhitePixel (display, screen); 
  black_pixel = BlackPixel (display, screen); 
  win = XCreateSimpleWindow (display, root,  
			     0, 0, 200, 150, 2, black_pixel, white_pixel); 
  XSelectInput (display, win, ExposureMask | ButtonPressMask); 
  XStoreName (display, win, "debogue"); 
  XMapWindow (display, win); 
 
  for (;;) { 
    XEvent ev; 
    XNextEvent (display, &ev); 
    switch (ev.type) { 
    case Expose :             
      XDrawString (display, win, gc, 10, 30, "coucou !", 8); 
      break; 
    case ButtonPress :
      if( (ev.xbutton.x + ev.xbutton.y)%4 == 0) {
write(1, "a", 1);
	XDrawString (display, win, gc, ev.xbutton.x, ev.xbutton.y, "ici", 3);
write(1, "b", 1);
	XDrawString (display, win, gc, ev.xbutton.x +30, ev.xbutton.y, "la",2);
write(1, "c", 1);
      } else {
write(1, "d", 1);
	XDrawString (display, win, gc, ev.xbutton.x, ev.xbutton.y, "ici", 3);
write(1, "e", 1);
	XDrawString (display, wim, gc, ev.xbutton.x +30, ev.xbutton.y, "la",2);
write(1, "f", 1);
      };
      break;
    default : 
      break;            
    } 
  } 
} 
 

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