C.
RECANATI
Interfaces
Graphiques
ILOG
2, septembre 2004
TP 2 :
Evénements
Exercice 1: (programme
expose.c)
Le but de l’exercice
est de tester les événements de type Expose. Pour cela, créer une fenêtre qui
sélectionne ce type d’événement ; imprimer
à la console pour chaque événement de type Expose reçu le champ count, la
taille et la position du rectangle retourné par
l’événement. Pour tester ce programme, on jouera avec les
autres fenêtres ou icônes présents à
l’écran.
Exercice 2: (programme
keyPress.c)
Sélectionner sur une
fenêtre les événements de type KeyPress. Pour chaque événement reçu,
appeler XLookupString pour récupérer le code du
caractère lu dans une chaîne ; imprimer par printf la chaîne récupérée si
elle est non vide (cas d’un caractère imprimable), ou
l’entier correspondant au code symbolique du caractère émis
dans le cas contraire. Indiquer un message pour signaler la frappe d’un
caractère return ou d’un backspace.
Indications : il faut faire un #include <X11/keysym.h>
pour inclure les codes
symboliques des caractères et les utiliser dans le programme. Ces codes
sont définis dans keysymdef.h (lui-même inclus par keysym.h). Editer ce fichier pour lire ces codes et observer
leur ordre de définitions.
Exercice 3: (programme
propagate.c)
Le but de l’exercice
est d’observer la propagation des événements. Pour cela,
créez une fenêtre contenant
3 filles w1, w2 et w3 que vous placerez les unes à
côté
des autres, sans les empiler.
1) Sur la mère et sur
w1, vous sélectionnerez le clic et les mouvements souris avec bouton
enfoncé. Vous ne sélectionnerez pas
d’événement sur w2 et w3 ; et dans w3, vous
empêcherez la propagation du clic et des mouvements souris. Imprimez
alors pour chaque événement reçu le type de
l’événement
et l’identificateur de la
fenêtre ayant reçu l’événement. Observez le
résultat.
Exercice 4: (programme
ascenseur.c)
On va créer un
programme d’ascenseur. Pour cela, on crée d’abord une
fenêtre qui servira de cage d’ascenseur (elle sera horizontale).
Puis une sous-fenêtre carrée (côté identique à
la hauteur de la mère) que l’on place dans l’ascenseur. Le
fonctionnement du programme est le suivant :
1) Quand on clique dans la cage d’ascenseur,
l’ascenseur vient se positionner (centré) sous la souris.
Même chose, quand on clique sur l’ascenseur lui-même. (En
fait ce comportement ne nécessite pas de distinguer deux cas pour la
programmation).
2) Quand on déplace la souris en maintenant le
bouton enfoncé, l’ascenseur suit le mouvement et se
déplace.
3) L’ascenseur reste coincé dans sa
mère, de sorte qu’il est toujours entièrement visible quand
on se rapproche des bords. (C’est une exception au cas
1).
S’il vous reste du
temps : programmez le changement de taille de l’ascenseur ou mettez
des bords à l’ascenseur.