Ce programme montre comment il est possible de récupérer des informations provenant de l'utilisateur lorsqu'il utilise son clavier, sa souris ou lorsqu'il valide une chaîne de caractères à l'aide d'une boîte de saisie sans bloquer l'exécution du programme.
À chaque fois qu'un utilisateur déplace la sourris, appuie sur les touches d'un clavier, ou entre du texte dans une boîte de saisie, un événèment est créé par la bibliothèque MLV. Cet évènement est placé dans une file d'attente. Il est possible de récupérer toutes les informations concernant ces évènements en appelant la fonction MLV_get_event(). Cette fonction supprime le dernier évènement de la pile, l'analyse et renvoie, à l'aide de ses paramètres et de sa valeur de retour, toutes les informations le concernant.
#include <stdlib.h>
#include <stdio.h>
void affichage(
int nb_touche, int nb_mouse_click, int nb_mouse_motion,
int x, int y, char* texte1, char* texte2,
int width, int height
){
int taille_interlinge = 5;
10,160,
"Lorsque vous cliquez sur une boîte de saisie,\nles évènements concernant le clavier et la souris\nne sont plus transmis à l'utilisateur.",
taille_interlinge,
);
10, 40,
"Nombre de fois que l'on a appuyé sur une touche : %i",
);
10, 60,
"Nombre de fois que la souris a bougé : %i",
);
10, 80,
"Nombre de click de souris : %i",
);
x, y,
"(%d,%d)",
);
10, 140,
texte1,
);
220, 140,
texte2,
);
}
int main(int argc, char *argv[]){
int width = 640, height = 460;
int x=0,y=0;
char* texte = NULL;
char *texte1, *texte2;
int nb_touche = 0;
int nb_mouse_click = 0;
int nb_mouse_motion = 0;
int quit = 0;
10, 100,
200, 30,
);
texte1 = (char*) malloc( sizeof(char) ); *texte1 = '\0';
220, 100,
200, 30,
);
texte2 = (char*) malloc( sizeof(char) ); *texte2 = '\0';
affichage(
nb_touche, nb_mouse_click, nb_mouse_motion, x, y,
texte1, texte2, width, height
);
do {
&sym, &mod, NULL,
&texte, &input_box,
&x, &y, NULL,
&state
);
switch( event ){
break;
nb_touche = nb_touche + 1;
}
break;
if( input_box == input_box_1 ){
free( texte1 );
texte1 = texte;
}
if( input_box == input_box_2 ){
free( texte2 );
texte2 = texte;
}
break;
nb_mouse_click = nb_mouse_click + 1;
}
break;
nb_mouse_motion = nb_mouse_motion + 1;
break;
default :
fprintf(
stderr,
"Erreur : la valeur de l'évènement récupéré est impossible."
);
quit = 1;
}
affichage(
nb_touche, nb_mouse_click, nb_mouse_motion, x, y,
texte1, texte2, width, height
);
} while( ! quit );
return 0;
}
Fichier d'entête principal incluant tous les autres fichiers entêtes de la bibliothèque MLV.
#define MLV_COLOR_GREEN
Definition: MLV_color.h:931
#define MLV_COLOR_BLACK
Definition: MLV_color.h:379
#define MLV_COLOR_BLUE
Definition: MLV_color.h:631
#define MLV_COLOR_RED
Definition: MLV_color.h:1297
MLV_Event MLV_get_event(MLV_Keyboard_button *key_sym, MLV_Keyboard_modifier *key_mod, int *unicode, char **texte, MLV_Input_box **input_box, int *mouse_x, int *mouse_y, MLV_Mouse_button *mouse_button, MLV_Button_state *state)
Cette fonction récupère un évènement dans la file d'attente, remplit en fonction de l'évènement récup...
MLV_Event
Énumère les différents types d'évènement de la bibliothèque MLV.
Definition: MLV_event.h:46
@ MLV_INPUT_BOX
Definition: MLV_event.h:49
@ MLV_MOUSE_MOTION
Definition: MLV_event.h:52
@ MLV_MOUSE_BUTTON
Definition: MLV_event.h:51
@ MLV_KEY
Definition: MLV_event.h:48
@ MLV_NONE
Definition: MLV_event.h:47
MLV_Keyboard_button
Énumère l'ensemble des codes des touches du clavier.
Definition: MLV_keyboard.h:50
MLV_Keyboard_modifier
Énumère l'ensemble des codes associées aux différents modes du clavier.
Definition: MLV_keyboard.h:299
void MLV_draw_text(int x, int y, const char *text, MLV_Color color,...)
Imprime un texte donné à une position et une couleur données.
@ MLV_TEXT_LEFT
Definition: MLV_text.h:46
void MLV_draw_adapted_text_box(int x, int y, const char *message, int sizeInterligne, MLV_Color borderColor, MLV_Color textColor, MLV_Color backgroundColor, MLV_Text_justification text_justification,...)
Dessine une boîte contenant du texte.
void MLV_free_window()
Ferme la fenêtre de la bibliothèque MLV.
void MLV_create_window(const char *window_name, const char *icone_name, unsigned int width, unsigned int height)
Créé une fenêtre dont la taille, et les différents noms sont passés en paramètres.
void MLV_update_window()
Met à jour l'affichage de la fenêtre.
void MLV_clear_window(MLV_Color color)
Éfface la fenêtre et la remplace par un monochrome de la couleur donnée en paramètre.