[C] xlib (edit: ca marche!)

xlib (edit: ca marche!) [C] - C++ - Programmation

Marsh Posté le 30-12-2002 à 18:31:37    

voilà, maintenant que je peux compiler, je fais du x [:dawa]
 
seulement, mon programme n'affiche rien, la fenêtre se crée bien, les événements sont ok ... mais ca ne dessine rien
 
ca doit être qc de vraiment con sur la variable "draw", mais vu que je connais pas bien du tout tout ca, je coince.
j'y ai bien passé tout l'après midi, mais sans succès
 
voilà le morceau
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <X11/Xlib.h>
  4. #include <X11/Xutil.h>
  5. #include <X11/Xos.h>
  6. #include <X11/Xatom.h>
  7. #include <X11/keysym.h>
  8. int main() {
  9. int screen, i;
  10. Display *display;
  11. Window root, window;
  12. long fgcolor, bgcolor;
  13. XEvent event;
  14. long eventmask = KeyPressMask;
  15. XGCValues gcval;
  16. GC draw;
  17. XColor color, ignore;
  18. char *colorname = "red";
  19. Colormap colormap;
  20. display = XOpenDisplay(NULL);
  21. root = RootWindow(display, screen = DefaultScreen(display));
  22. fgcolor = BlackPixel (display, screen);
  23. bgcolor = WhitePixel (display, screen);
  24. window = XCreateSimpleWindow(display, root, 1, 1, 200, 200, 0,
  25. fgcolor, bgcolor);
  26. XSelectInput(display, window, eventmask);
  27. XMapWindow(display, window);
  28. colormap = DefaultColormap (display, screen);
  29. XAllocNamedColor(display,colormap, colorname, &color, &ignore);
  30. fgcolor = color.pixel;
  31. gcval.foreground = fgcolor;
  32. gcval.background = bgcolor;
  33. draw = XCreateGC(display, window, GCForeground|GCBackground, &gcval);
  34. for(;;) {
  35.  XWindowEvent(display, window, eventmask, &event );
  36.  switch( event.type ) {
  37.   case Expose:
  38.    XDrawRectangle(display,window,draw,10,10, 180, 180);
  39.    break;
  40.   case KeyPress:
  41.    exit(0);
  42.  }
  43. }
  44. return(0);
  45. }


Message édité par Profil supprimé le 01-01-2003 à 17:19:24
Reply

Marsh Posté le 30-12-2002 à 18:31:37   

Reply

Marsh Posté le 30-12-2002 à 18:39:02    

Désolé, je ne vais pas pouvoir t'aider, mais où as-tu trouver des entêtes X, je ne les ai pas chez moi ...

Reply

Marsh Posté le 30-12-2002 à 18:39:51    

Olivier51 a écrit :

Désolé, je ne vais pas pouvoir t'aider, mais où as-tu trouver des entêtes X, je ne les ai pas chez moi ...

les .h?
/usr/X11R6/lib/

Reply

Marsh Posté le 30-12-2002 à 18:51:04    

Chez moi je les ai pas ...

Reply

Marsh Posté le 30-12-2002 à 18:52:04    

Olivier51 a écrit :

Chez moi je les ai pas ...

[:meganne]
tu ne compiles rien chez toi?
gcc pouet.c -o pouet.out -L/usr/X11R6/lib -lX11
des fois c dans /usr/X11/lib


Message édité par Profil supprimé le 30-12-2002 à 18:53:25
Reply

Marsh Posté le 30-12-2002 à 19:51:31    

je ne comprends rien, ya pas deux programmes qui font la meme chose qui sont identiques  :o
 
edit: ca fait 7 heures que je suis sur ce pb, ras le cul :o


Message édité par Profil supprimé le 30-12-2002 à 20:25:56
Reply

Marsh Posté le 30-12-2002 à 22:49:59    

j'ai un peu allégé, mais je ne vois tjs pas où est l'erreur ...
 
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <X11/Xlib.h>
  4. #include <X11/Xutil.h>
  5. #include <X11/Xos.h>
  6. #include <X11/Xatom.h>
  7. #include <X11/keysym.h>
  8. int main() {
  9. int screen, i;
  10. Display *display;
  11. Window root, window;
  12. long fgcolor, bgcolor;
  13. XEvent event;
  14. long eventmask = KeyPressMask;
  15. XGCValues gcval;
  16. GC draw;
  17. XColor color, ignore;
  18. char *colorname = "red";
  19. Colormap colormap;
  20. display = XOpenDisplay(NULL);
  21. root = RootWindow(display, screen = DefaultScreen(display));
  22. fgcolor = BlackPixel(display, screen);
  23. bgcolor = WhitePixel(display, screen);
  24. window = XCreateSimpleWindow(display, root, 1, 1, 200, 200, 0,
  25. fgcolor, bgcolor);
  26. XSelectInput(display, window, eventmask);
  27. XMapWindow(display, window);
  28. //l'erreur se trouve entre ici
  29. colormap = DefaultColormap (display, screen);
  30. draw = XCreateGC(display, window, 0, 0);
  31. XSetForeground(display,draw, bgcolor);
  32. //et là ...
  33. XFlush(display);
  34. XDrawRectangle(display,window,draw,10,10, 180, 180);
  35. XFlush(display);
  36. for(;;) {
  37.  XWindowEvent(display, window, eventmask, &event );
  38.  switch( event.type ) {
  39.   case Expose:
  40.    XDrawRectangle(display,window,draw,10,10, 180, 180);
  41.    XFlush(display);
  42.    break;
  43.   case KeyPress:
  44.    exit(0);
  45.  }
  46. }
  47. return(0);
  48. }


Message édité par Profil supprimé le 30-12-2002 à 22:51:07
Reply

Marsh Posté le 01-01-2003 à 14:56:44    

[:dawa]

Reply

Marsh Posté le 01-01-2003 à 17:19:45    

cai bon!
 
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <X11/Xlib.h>
  4. #include <X11/Xutil.h>
  5. #include <X11/Xos.h>
  6. #include <X11/Xatom.h>
  7. #include <X11/keysym.h>
  8. int main() {
  9. int screen;
  10. Display *display;
  11. Window root, window;
  12. long fgcolor, bgcolor;
  13. XEvent event;
  14. long eventmask = KeyPressMask;
  15. GC draw;
  16. //XColor color;
  17. Colormap colormap;
  18. display = XOpenDisplay(NULL);
  19. root = RootWindow(display, screen = DefaultScreen(display));
  20. fgcolor = BlackPixel(display, screen);
  21. bgcolor = WhitePixel(display, screen);
  22. window = XCreateSimpleWindow(display, root, 1, 1, 200, 200, 0,
  23. fgcolor, bgcolor);
  24. XSelectInput(display, window, eventmask);
  25. XMapWindow(display, window);
  26. colormap = DefaultColormap(display, screen);
  27. draw = XCreateGC(display, window, fgcolor,0);
  28. for(;;) {
  29.  XWindowEvent(display, window, eventmask, &event );
  30.  switch( event.type ) {
  31.   case Expose:
  32.    XDrawRectangle(display,window,draw,10,10, 180, 180);
  33.    printf("expose\n" );
  34.    XFlush(display);
  35.    break;
  36.   case KeyPress:
  37.    XDrawRectangle(display,window,draw,10,10, 180, 180);
  38.    XDrawLine(display,window,draw,10,10,190,190);
  39.    XDrawLine(display,window,draw,10,190,190,10);
  40.    XFlush(display);
  41.    sleep(3);
  42.    exit(0);
  43.  }
  44. }
  45. return(0);
  46. }

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed