• Aucun résultat trouvé

C. RecanatiOption C avancé, avec X-WindowLicence 3, 2007-2008TP 5 : Evénements et contexte graphique

N/A
N/A
Protected

Academic year: 2022

Partager "C. RecanatiOption C avancé, avec X-WindowLicence 3, 2007-2008TP 5 : Evénements et contexte graphique"

Copied!
3
0
0

Texte intégral

(1)

C. Recanati

Option C avancé, avec X-Window Licence 3, 2007-2008

TP 5 : Evénements et contexte graphique Exercice 1 (programme menu.c)

Ce programme est une première version de menu où l’on ne s’intéresse qu’au traitement des événements.

Le programme affiche d’abord une fenêtre principale dans laquelle l’utilisateur pourra cliquer pour faire apparaître un « pop-up » menu. La fenêtre contenant le menu contiendra plusieurs sous- fenêtres pour les différents choix (ou items) du menu. Cette fenêtre menu (ainsi que ses filles, les items) sera créée en début de

programme (XCreateWindow...), mais elle ne sera affichée (XMapWindow) que dans la boucle d’événement, quand un événement de clic de souris (sur la fenêtre principale) sera reçu.

Principe de fonctionnement du menu :

1) Le menu apparaît uniquement sur l’enfoncement du bouton gauche de la souris dans la fenêtre principale.

2) Si le bouton de souris est relâché, le menu disparaît.

3) Tant qu’on maintient le bouton enfoncé, le menu reste affiché et on peut alors faire glisser la souris au dessus des différentes sous- fenêtres représentant les items. Chaque entrée dans une sous- fenêtre (événement EnterNotify) provoque l’impression à la console de l’identificateur de fenêtre correspondant.

Attention aux difficultés suivantes :

La fenêtre menu doit pouvoir pendre à l’extérieur de la fenêtre principale. Par conséquent, le menu doit être une fenêtre fille de la RootWindow.

Il y a un « grab automatique » sur l’enfoncement d’un bouton de souris. Sans précaution particulière, seule la fenêtre qui a reçu cet événement se trouve alors recevoir les autres événements souris (jusqu’au relâchement du bouton). Si l’on souhaite que les

événements d’entrée/sortie des sous-fenêtres

(EnterNotify/LeaveNotify) soient transmis aux sous-fenêtres

(2)

de l’application, il faut supprimer ce « grab » pour l’application propriétaire de ces fenêtres (masque OwnerGrabButtonMask).

Exercice 2 (programme MenuPattern.c)

Pour compléter l’exercice précédent, créez un menu qui présentera à l’utilisateur différents fonds de fenêtre (des Pixmap). Pour la création de ces Pixmaps, on pourra utiliser des adresses de fichiers au format bitmap et utiliser la méthode de l’exercice 2 du TP4.

Comme dans l’exercice 1, le principe est que le programme affiche une fenêtre dans laquelle l’utilisateur pourra cliquer pour faire apparaître le menu (et le menu n’apparaîtra que sur l’enfoncement du bouton gauche de la souris). Dès qu’on relâche le bouton, le menu disparaît. Et si l’on maintient le bouton enfoncé, chaque entrée dans une sous-fenêtre affichant un fond (= un item du menu) provoquera l’impression à la console du nom du fichier bitmap correspondant à ce fond. Quant au relâchement du

bouton, on peut convenir qu’il entraîne l’affichage de ce fond dans la fenêtre principale (faire un XFillRectangle dans la fenêtre avec ce Pixmap comme attribut du contexte graphique gc servant à dessiner).

Autres indications :

On pourra déclarer un tableau de char* contenant des noms de fichiers bitmap, un tableau de Pixmap pour contenir les fonds correspondant, et un tableau de fenêtres pour représenter les items du menu. On fera alors une boucle de création des sous-fenêtres du menu en leur affectant comme fond le Pixmap créé à partir du fichier bitmap selon la méthode de l’exercice 2 du TP4 (i.e. à l’aide des fonctions XReadBitmapFile, XCreatePixmap et

XCopyPlane).

Note : Cette méthode utilise beaucoup de mémoire car elle utilise des fenêtres InputOutput ayant un fond. On verra plus tard

comment optimiser un programme (ici de menu) avec des fenêtres de type InputOnly (i.e. sans fond, ni attribut graphique).

Références

Documents relatifs

Vivre ensemble : Travail en collectif pour réaliser des fonds colorés qui serviront de fonds pour des travaux suivants. Activités Décrochées : - travail sur les ronds

2) Quand on relâche la souris dans le bouton, il se réaffiche avec ses couleurs d’origine et l’on quitte le programme.. 3) Quand on relâche la souris à l’extérieur du bouton, le

Si la souris laisse au chat le soin de choisir l’entier N quelconque supérieur à 10, il se précipite sur la valeur gagnante pour lui 0 qui est 19 et alors la souris

identifier le titre d'un livre et le distinguer parmi d'autres titres ressemblants. consigne: retrouve les bons titres et entoure retrouve les bons titres et entoure retrouve les

Rôti de bœuf Carry poulet Filet de merlu frit Riz cantonnais porc Omelette fromage. Semoule de couscous Riz Gratin de pâtes

Fondue chinoise  Viande de bœuf fraîche en cubes 200 gr 45.00 Fondue Chinoise  Rindfleisch frisch Würfel 200 gr. Fondue chinoise  cubes of fillet of beef

Die Programme P18 bis P22 sind Pulsschlag-Kontroll-Programme, wobei P22 für das Programm zum individuell angestrebten Pulsschlag steht. Training mit Ihrem individuellen Zielpuls.

Exemple : on peut placer les souris face contre la table, celui qui pioche une souris particulière (souris blanche, zèbre, panthère, marquée d’un signe particulier…) a le droit