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.