voila, je vous expose mon prob. je developpe (depuis peu) avec Dev C++ sous Windows XP.
je dois faire un projet qui permet de gerer le materiel d'une
entreprise. pour cela, il faut faire un menu (à l'aide de la
bibliothèque pdcurses) mais j' un prob je n'arrive pas a recuperer le
choix tapé au clavier pour ensuite m'en servir! (equivalent de scanf
non?)
alors voici une partie de mon code afin que vous compreniez ce que je
veux dire car je sais pas si j'ai ete tres claire!! (soyez indulgent
svp car c'est mon tout premier code! merci)
merci beaucoup,
#include <stdio.h>
#include <stdlib.h>
#include <curses.h>
/* declaration des fonctions*/
void menu_principal();
void menu_gerer_dispositifs();
void menu_gerer_interventions();
void menu_affichage();
void menu_recherche_dispo();
void menu_recherche_intervention();
void menu_quitter();
/* fonctions menu*/
void menu_principal()
{ int c;
int choix1;
char rep;
mvprintw (2,20,"***********************");
mvprintw (3,20,"* Outil de GMAO de DM *");
mvprintw (4,20,"***********************");
mvprintw (6,25,"MENU PRINCIPAL");
mvprintw (8,10,"1) Gérer les dispositifs");
mvprintw (9,10,"2) Gérer les interventions");
mvprintw (10,10,"3) Affichage");
mvprintw (11,10,"4) Recherche d'un dispositif a partir d'une caracteristique");
mvprintw (12,10,"5) Recherche d'une intervention a partir d'une caracteristique");
mvprintw (13,10,"6) Pour quitter appuyer sur F1");
mvprintw(14,8,"Entrez le numéro désiré : ",choix1);
refresh();
do
{
choix1 = getch();
switch (choix1)
{/* gestion des dispo*/
case 1:
do{
/*sous-menu 1*/
menu_gerer_dispositifs();
puts("pour sortir frapper ESC");
rep = getch();
}
while (rep!=27);
break;
case 2:
do{
/*sous-menu 2*/
menu_gerer_interventions();
puts("pour sortir frapper ESC");
rep = getch();
}
while (rep!=27);
break;
case 3:
do
{
/*sous-menu 3*/
menu_affichage();
puts("pour sortir frapper ESC");
rep = getch();
}
while (rep!=27);
break;
case 4:
do
{
menu_recherche_dispo();
puts("pour sortir frapper ESC");
rep = getch();
}
while (rep!=27);
break;
case 5:
do
{
menu_recherche_intervention();
puts("pour sortir frapper ESC");
rep = getch();
}
while (rep!=27);
break;
case 6:
do
{
menu_quitter();
puts("pour sortir frapper ESC");
rep = getch();
}
while (rep!=27);
break;
}
} while (choix1!= KEY_F(1));
}
void menu_gerer_dispositifs()
{
mvprintw (2,20,"GESTION DES DISPOSITIFS");
mvprintw (6,10,"1.1) Ajouter un nouveau dispositif");
mvprintw (7,10,"1.2) Supprimer un dispositif existant");
mvprintw (8,10,"1.3) Modifier un dispositif existant");
mvprintw (9,10,"1.4) Retour au menu principal");
mvprintw (10,8,"Entrez le numéro désiré : ");
refresh();
}
void menu_gerer_interventions()
{
mvprintw (2,20,"GESTION DES INTERVENTIONS");
mvprintw (6,10,"2.1) Ajouter des interventions");
mvprintw (7,10,"2.2) Supprimer des interventions");
mvprintw (8,10,"2.3) Modifier une intervention existante");
mvprintw (9,10,"2.4) Retour au menu principal");
mvprintw (10,8,"Entrez le numero desire:");
refresh();
}
void menu_affichage()
{
mvprintw (2,20,"AFFICHAGE");
mvprintw (6,10,"3.1) Afficher les interventions d'un dispositif choisi");
mvprintw (7,10,"3.2) Afficher tous les dispositifs devant etre soumis a une intervention dans les n mois suivants");
mvprintw (8,10,"3.3) Afficher tous les dispositifs en retard");
mvprintw (9,10,"3.4) Afficher tous les dispositifs n'ayant pas encore d'interventions planifiees");
mvprintw (10,10,"3.5) Afficher le planning des interventions pour les n mois suivants");
mvprintw (11,10,"3.6) Retour au menu principal");
mvprintw (13,8," Entrez le numero desire:");
refresh();
}
void menu_recherche_dispo()
{
mvprintw (2,20,"RECHERCHER DES DISPOSITIFS");
mvprintw (6,10,"4.1) A partir du code interne");
mvprintw (7,10,"4.2) A partir du code constructeur");
mvprintw (8,10,"4.3) A partir du modele");
mvprintw (9,10,"4.4) A partir de la marque");
mvprintw (10,10,"4.5) A partir d'une designation");
mvprintw (11,10,"4.6) A partir de la classe");
mvprintw (12,10,"4.7) A partir du modele d'intervention");
mvprintw (13,10,"4.8) A partir de la periode de maintenance");
mvprintw (14,10,"4.9) A partir de la date de mise en service");
mvprintw (15,10,"4.10) A partir du niveau de risque");
mvprintw (16,10,"4.11) Retour au menu principal");
mvprintw (17,8," Entrez le numero desire:");
refresh();
}
void menu_recherche_intervention()
{
mvprintw (2,20,"RECHERCHER DES INTERVENTIONS");
mvprintw (6,10,"5.1) A partir du code interne");
mvprintw (7,10,"5.2) A partir de la date de l'intervention");
mvprintw (8,10,"5.3) A partir de l'equipement");
mvprintw (9,10,"5.4) A partir du modele de l'intervention");
Oui moi j'utilserai bien le getch() il appartient a la bibliotheque <conio.h> et ne peut etre utiliser que sous windows. Le probleme c'est que parfois le buffer ne se vide pas tout de suite et le choix saisie reste le meme apres la fin d'une boucle,donc j'accompagne toujours un getch() d'un fflush(stdin);