Correction de c_cursor.c

/* changement de  cursor  */

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


GC      gc; 
Display *display; 
int     screen; 
Window  win, root; 
unsigned long white_pixel, black_pixel; 
Cursor curs0, curs1;
XSetWindowAttributes attributs;
unsigned long masque_valeur;
 
main() { 
  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); 
  masque_valeur = 0;
  attributs.background_pixel = white_pixel;
  masque_valeur |= CWBackPixel;
  attributs.border_pixel = black_pixel;
  masque_valeur |= CWBorderPixel;
  attributs.cursor = curs0 = XCreateFontCursor(display, XC_gumby);
  curs1 = XCreateFontCursor(display, XC_man);
  masque_valeur |= CWCursor;
  win = XCreateWindow (display, root, 0, 0, 200, 300, 5, CopyFromParent, 
		       InputOutput, CopyFromParent, masque_valeur, &attributs);
  XStoreName(display, win, "c_cursor");
  XSelectInput (display, win, ButtonPressMask); 
  XMapWindow (display, win); 
  
  for (;;) { 
    XEvent ev; 
    XNextEvent (display, &ev); 
    switch (ev.type) { 
    case ButtonPress :
      if (ev.xbutton.x < 100)
	 XDefineCursor(display, win, curs1);
      else
	 XDefineCursor(display, win, curs0);
      break; 
    default : 
      break;            
    } 
  } 
} 
 

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