#1 Le 22/09/2008, à 22:09
- Bigcake
[résolu] signaux Window manager en C
Bonjour,
Est-ce que quelqu'un saurait me dire comment on recupère les signaux envoyé pas le window manager en C ?
Je parle des boutons réduire / agrandir / fermer, bien sur si y en a d'autres je suis preneur
J'utilise XCreateWindow et XCreateSimpleWindow pour ouvrir des fenetres
merci
EDIT : pour la résolution : http://forum.ubuntu-fr.org/viewtopic.php?id=256891
Dernière modification par Bigcake (Le 13/11/2008, à 10:17)
"Les gens" ne sont pas cons, ils ont été habitués à la facilité et à la désinformation. Le meilleur moyen de ne pas les aider, c'est de se moquer. Le meilleur moyen de les aider, c'est de les informer, encore et encore. La réflexion viendra. N'oubliez pas que vous aussi, vous êtes le con d'un autre.
Smartphone+GNU/Linux=Librem5
Hors ligne
#2 Le 23/09/2008, à 10:00
- Karl_le_rouge
Re : [résolu] signaux Window manager en C
Tu tapes directement dans la Xlib ? T'as du courage mais tu touches à un point clé de la programmation événementielle.
La technique commune consiste à capturer les événements dans une boucle et ensuite à dispatcher l'évènement vers la fonction de traitement adéquate.
C'est valable pour X11, win32 et bien évidemment les toolkits de niveau supérieur comme Gtk+ (c'est l'équivalent de la MainLoop de la GLib) ou MFC (pouah!)
En Xlib, ça donne un truc de ce genre:
XEvent ev;
while(1) {
XNextEvent(display, &ev);
switch (ev.type) {
case Expose:
/* traitement event Expose */
break;
case ButtonPress:
/* traitement event ButtonPress */
break;
case KeyPress:
/* traitement event KeyPress */
break;
/* etc... */
}
}
Hors ligne
#3 Le 23/09/2008, à 12:45
- Bigcake
Re : [résolu] signaux Window manager en C
Justement je suis en train de développer un toolkit
Mon souci c'est que je ne sait pas comment récupérer le fait que l'utilisateur clique sur un des 3 boutons en haut de la fenêtre réduire/agrandir/fermer.
Si mon process ouvre 2 fenetres et que j'en ferme une via la croix les 2 fenêtres se ferme avant que j'ai pu analyser l'event.
Et si j'essaye mon process se tue avec un joli message ^^!
XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0"
after 13 requests (6 known processed) with 0 events remaining.
Sa me fait penser que le window manager envoi un signal à mon appli qui ferme la connexion au serveur X (ouverte avec XOpenDisplay)
Voila, si quelqu'un a une idée, un 'man' ou la solution complète je dit pas non
Dernière modification par Bigcake (Le 23/09/2008, à 12:46)
"Les gens" ne sont pas cons, ils ont été habitués à la facilité et à la désinformation. Le meilleur moyen de ne pas les aider, c'est de se moquer. Le meilleur moyen de les aider, c'est de les informer, encore et encore. La réflexion viendra. N'oubliez pas que vous aussi, vous êtes le con d'un autre.
Smartphone+GNU/Linux=Librem5
Hors ligne
#4 Le 23/09/2008, à 21:43
- Bigcake
Re : [résolu] signaux Window manager en C
Bon j'ai trouvé pour gerer les events des boutons minimiser/agrandir via l'event PropertyNotify et le mask PropertyChangeMask
Mais je bloque toujours sur le bouton 'fermer'
"Les gens" ne sont pas cons, ils ont été habitués à la facilité et à la désinformation. Le meilleur moyen de ne pas les aider, c'est de se moquer. Le meilleur moyen de les aider, c'est de les informer, encore et encore. La réflexion viendra. N'oubliez pas que vous aussi, vous êtes le con d'un autre.
Smartphone+GNU/Linux=Librem5
Hors ligne