X11 gestion de 2 fenetres
Bonjours a tousm
Je dois realiser un logiciel de dessin pour un projet en classe dans le quel il faut gerer 2 fenetres.
Mon probleme est le suivant
Je n'arrive pas a touver comment faire pour gerer les evenements des deux fenetres.
tantot c'est l'une qui est gerer tantot c'est l'autre.
Si quelqu'un a une idee.
Peut-on retrouver la window parent ?
Bonsoir,
J'ai un autre probeme car dans l'une de mes window j'ai des buttons qui eux aussi ont leurs propre windows. quand je point sur un de ces buttons ca n'appel pas la fonction firstwin_event car la windows est celle du button est non le firstwin.
Est-il possible de retrouver la winidows ? par exemple.
Re: Peut-on retrouver la window parent ?
Citation:
Envoyé par caesarvanou
Bonsoir,
J'ai un autre probeme car dans l'une de mes window j'ai des buttons qui eux aussi ont leurs propre windows. quand je point sur un de ces buttons ca n'appel pas la fonction firstwin_event car la windows est celle du button est non le firstwin.
Est-il possible de retrouver la winidows ? par exemple.
C'est possible.
En fait il faut que tu mette un masque d'evenement sur chaque bouton/fenetre, et que tu verifie quand tu recois ton evenement si c'est bien sur elle qu'on a clique.
Pour ce cas, la liste chainee de fenetre est toute indiquee, comme l'a decrite fearyourself.
1_ Tu remplis une liste chainee avec tes boutons:
Code:
1 2 3 4 5 6 7 8 9
|
btn1 = create_button(...);
btn2 = create_button(...);
btn3 = create_button(...);
...
list_add(btn1);
lsit_add(btn2);
list_add(btn2); |
Avec un create_button qui devrait ressembler a ca:
Code:
1 2 3 4 5 6 7 8 9 10 11
|
button *create_button(...)
{
button *new_btn;
new_btn = malloc(sizeof(*new_btn));
button = XCreateWindow(...);
XSelectInput(dpy, new_btn, ExposureMask | ButtonPressMask | ButtonReleaseMask);
....
return (new_btn);
} |
2_ Dans ton gestionnaire d'evenement, tu parcours la liste chainee pour trouver la fenetre qui vient d'etre cliquee.
En considerant que tu as une liste chainee nommee list, et un XEvent nomme xevent:
Code:
1 2 3 4 5 6 7 8
|
while (list)
{
if (list->button == xev.xany.window)
{
/* Et la tu fais l'action qui resulte d'un clic sur un bouton. */
}
} |
Comment gerer les buttons des les fenetres ?
Bonjour,
Les buttons fonctionnes tres bien, en tait jl'ai meme deux liste chaine une pour les outils et une autre pour le pelette de couleurs.
Mais je n'arrive pas a gere a la fois les buttons et les deux fenetres.
Re: Comment gerer les buttons des les fenetres ?
Citation:
Envoyé par caesarvanou
Bonjour,
Les buttons fonctionnes tres bien, en tait jl'ai meme deux liste chaine une pour les outils et une autre pour le pelette de couleurs.
Mais je n'arrive pas a gere a la fois les buttons et les deux fenetres.
Tant mieux si ca marche, le X pour faire des applications de ce genre c'est vraiment pas joyeux.
C'est pour ca qu'on a invente GTK et d'autres du genre.
Pourrais tu preciser ton probleme ? C'est un peu flou pour qu'on puisse t'aider.