/* demo-05.c : demonstration de EZ-Draw * * Edouard.Thiel@lif.univ-mrs.fr - 02/07/2008 - version 1.2 * * Compilation sous Unix : * gcc -Wall demo-05.c ez-draw.c -o demo-05 -lX11 -lXext -L/usr/X11R6/lib * Compilation sous Windows : * gcc -Wall demo-05.c ez-draw.c -o demo-05.exe -lgdi32 * * This program is free software under the terms of the * GNU Lesser General Public License (LGPL) version 2.1. */ #include "ez-draw.h" void win1_on_expose (Ez_event *ev) /* Il faut tout redessiner */ { ez_draw_text (ev->win, EZ_MC, 200, 150, "L'affichage des evenements\nest fait dans la console.\n\n" "Tapez 'q' pour quitter."); printf ("Expose win = 0x%x\n", (int) ev->win); } void win1_on_button_press (Ez_event *ev) /* Bouton souris enfonce' */ { printf ("ButtonPress win = 0x%x mx = %d my = %d mb = %d\n", (int) ev->win, ev->mx, ev->my, ev->mb); } void win1_on_button_release (Ez_event *ev) /* Bouton souris relache' */ { printf ("ButtonRelease win = 0x%x mx = %d my = %d mb = %d\n", (int) ev->win, ev->mx, ev->my, ev->mb); } void win1_on_motion_notify (Ez_event *ev) /* Souris deplace'e */ { printf ("MotionNotify win = 0x%x mx = %d my = %d mb = %d\n", (int) ev->win, ev->mx, ev->my, ev->mb); } void win1_on_key_press (Ez_event *ev) /* Touche clavier enfonce'e */ { printf ("KeyPress win = 0x%x mx = %d my = %d " "key_sym = 0x%x key_name = %s key_count = %d key_string = \"%s\"\n", (int) ev->win, ev->mx, ev->my, (int) ev->key_sym, ev->key_name, ev->key_count, ev->key_sym == XK_Return || ev->key_sym == XK_KP_Enter ? "" : ev->key_string); } void win1_on_key_release (Ez_event *ev) /* Touche clavier relache'e */ { printf ("KeyRelease win = 0x%x mx = %d my = %d " "key_sym = 0x%x key_name = %s key_count = %d key_string = \"%s\"\n", (int) ev->win, ev->mx, ev->my, (int) ev->key_sym, ev->key_name, ev->key_count, ev->key_sym == XK_Return || ev->key_sym == XK_KP_Enter ? "" : ev->key_string); switch (ev->key_sym) { case XK_q : ez_quit (); break; } } void win1_on_configure_notify (Ez_event *ev) /* Taille fenetre modifie'e */ { printf ("ConfigureNotify win = 0x%x width = %d height = %d\n", (int) ev->win, ev->width, ev->height); } void win1_on_window_close (Ez_event *ev) /* Fermeture fenetre intercepte'e */ { printf ("WindowClose win = 0x%x\n", (int) ev->win); } void win1_event (Ez_event *ev) /* Appele'e a chaque evenement sur win1 */ { switch (ev->type) { case Expose : win1_on_expose (ev); break; case ButtonPress : win1_on_button_press (ev); break; case ButtonRelease : win1_on_button_release (ev); break; case MotionNotify : win1_on_motion_notify (ev); break; case KeyPress : win1_on_key_press (ev); break; case KeyRelease : win1_on_key_release (ev); break; case ConfigureNotify : win1_on_configure_notify (ev); break; case WindowClose : win1_on_window_close (ev); break; default : printf ("Evenement inconnu : %d\n", ev->type); } } int main () { if (ez_init() < 0) exit(1); ez_window_create (400, 300, "Demo 05 : trace les evenements", win1_event); ez_auto_quit (0); /* pour capter l'evenement WindowClose */ ez_main_loop (); exit(0); }