Raga sto smanettando con questo semplice codice C che utilizza le librerie Xlib.h (sotto Linux ovvio :P)

Ma il compilatore da errore in questi punti:

codice:
 done = 0;
   
   while(done = 0)
   {
    XNextEvent(mydisplay, &myevent);
    switch(myevent.type);
    {
 -->  case Expose :
        if(myevent.xexpose.count == 0)
	 XDrawImageString(myevent.xexpose.display, myevent.xexpose.window, mygc, 50, 50, hello, strlen(hello));
	break;
     
 -->    case MappingNotify:
        XRefreshKeyboardMapping((XMappingEvent *)&myevent);
	break;
	
 -->    case ButtonPress:
 ###    XDrawImageString(myevent.xbotton.display, myevent.xbotton.window, mygc, myevent.xbotton.x, myevent.xbotton.y, hi, strlen(hi));
	break;
	
 -->    case KeyPress:
         i = XLookupString((XKeyEvent *)&myevent, text, 10, &mykey, 0);
	 
      if(i == 1 && text[0] == 'q') done = 1;
       break;
    }
   }
In sostanza dove ho messo le freccie dice :
--> error: case label not within a switch statement

Poi per tutte le voci myevent.xbotton : error: union has no member named `xbotton'



Preciso che le ho dichiarato le suguenti variabili:

Display *mydisplay;
Window mywindow;
GC mygc;
XEvent myevent;
KeySym mykey;
XSizeHints myhint;
int myscreen;
unsigned long myforeground, mybackground;
int i;
char text[10];
int done;