Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1208 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [Xlib] Problème de focus de fenêtre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Xlib] Problème de focus de fenêtre

n°1757806
Askelon
Posté le 10-07-2008 à 11:56:43  profilanswer
 

Bonjour à tous !
 
Voilà, comme indiqué dans le titre, je me heurte à un léger problème de focus avec un projet en C utilisant la Xlib. Mon but est d'afficher l'image passée en argv[1] sur le bureau (via une fenêtre Override_redirect), la position de la fenêtre étant donnée par argv[2] et argv[3].
Hors, par défaut avec mon code, la fenêtre apparait systématiquement au dessus de toutes les autres fenêtres, et impossible de l'en faire décoincer. J'ai bien trouvé la fonction XLowerWindow, mais lorsque je l'utilise, cela fonctionne tellement bien que ma fenêtre n'apparait plus du tout, même une fois toutes les autres fenêtres réduites :heink:  
 
Voilà toujours mon code :
 

Code :
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <Imlib2.h>
  4. #include <X11/Xlib.h>
  5. int main( int argc, char **argv )
  6. {
  7. int pos_x = atoi( argv[2] );
  8. int pos_y = atoi( argv[3] );
  9. /* La base : on définit le server X à utiliser */
  10. /* l'écran, etc., et on récupère la fenêtre root */
  11. Display *display = XOpenDisplay( NULL );
  12. int screen = DefaultScreen( display );
  13. int depth = DefaultDepth( display, screen );
  14. Visual *visuel = DefaultVisual( display, screen );
  15. Colormap colormap = DefaultColormap( display, screen );
  16. Window fenetre_root = RootWindow( display, screen );
  17. XEvent report;
  18. // On définit les attributs, puis la fenêtre  
  19. XSetWindowAttributes attrs = { ParentRelative, 0L, 0, 0L, 0, 0,
  20.    Always, 0L, 0L, False, StructureNotifyMask | ExposureMask, 0L, True, 0, 0 };
  21. Window fenetre = XCreateWindow(display, fenetre_root, pos_x, pos_y, 200, 200, 0, CopyFromParent, InputOutput, CopyFromParent, CWOverrideRedirect | CWEventMask | CWBackPixel, &attrs);
  22. /* Paramétrage d'imlib */
  23. imlib_context_set_display(display);
  24. imlib_context_set_visual(visuel);
  25. imlib_context_set_colormap(colormap);
  26. imlib_context_set_drawable(fenetre);
  27. /* On affiche la fenêtre */
  28. XMapWindow( display, fenetre );
  29. /* si on utilise ça, la fenêtre disparait ! O_o */
  30. //XLowerWindow(display, fenetre);
  31. XSelectInput( display, fenetre, ExposureMask );
  32. for( ;; )
  33. {
  34.  XNextEvent( display, &report );
  35.  Imlib_Image image = imlib_load_image( argv[1] );
  36.  imlib_context_set_image(image);
  37.  imlib_render_image_on_drawable(1,1);
  38. }
  39. imlib_free_image();
  40. return 0;
  41. }


 
 
Voilà, je voudrais simplement que ma fenêtre s'affiche sur le bureau, donc sous toutes les autres fenêtres :) je sais que c'est faisable puisque plusieurs soft et bout de code que j'ai croisé le font (et de la même manière que moi !), mais même après bien étudié les listings, impossible de faire fonctionner le miens :heink:  
 
Merci d'avance ;)

mood
Publicité
Posté le 10-07-2008 à 11:56:43  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [Xlib] Problème de focus de fenêtre

 

Sujets relatifs
Problème avec visual basic .net, usercontrol, validating/enter eventprobléme $_SESSION dans IE7
Problème variableFenêtre superposable translucide. Voir exemple.
4875+0.2332 = 4875.233398 problème précision float?probleme de passage de parametre avec accent.
probleme de conenxion a phpmyadminprobleme menu deroulant IE/firefox
problème flash/actionscriptProbleme VBA
Plus de sujets relatifs à : [Xlib] Problème de focus de fenêtre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR