Ce programme montre comment il est possible de récupérer des informations provenant de l'utilisateur lorsqu'il utilise une boîte de saisie sans bloquer l'exécution du programme.
Pour cela il utilise le système d'évènements de la bibliothèque MLV :
À 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>
void affichage( int width, int height, char* texte1, char* texte2 ){
10, 10,
"Voici un programme qui permet de gérer deux zones de texte simultanément.\nPour quitter, il suffit d'écrire \"quit\" dans la zone de texte de droite.",
9,
);
10, 150,
texte1,
);
220, 150,
texte2,
);
}
int main(int argc, char *argv[]){
int width = 640, height = 460;
char* texte, *texte1, *texte2;
"medium - 3 - input box events", "input box events", width, height
);
10, 100,
200, 30,
);
texte1 = (char*) malloc( 1*sizeof(char) ); *texte1 = '\0';
220, 100,
200, 30,
);
texte2 = (char*) malloc( 1*sizeof(char) ); *texte2 = '\0';
affichage( width, height, texte1, texte2 );
do {
NULL, NULL, NULL,
&texte, &input_box,
NULL, NULL, NULL,
NULL
);
if( input_box == input_box_1 ){
free( texte1 );
texte1 = texte;
}
if( input_box == input_box_2 ){
free( texte2 );
texte2 = texte;
}
}
affichage( width, height, texte1, texte2 );
} while( strcmp( texte2, "quit" ) );
free( texte1 );
free( texte2 );
return 0;
}
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.
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...
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_CENTER
Definition: MLV_text.h:45
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.