IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Problème avec Ncurses


Sujet :

C

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 9
    Par défaut Problème avec Ncurses
    Bonjour,

    Loin d'être un codeur fou, je ne suis qu'un simple étudiant en école d'ingé qui à un projet en C à rendre. J'aimerais bien faire un beau rendu et j'ai donc pensé tester la lib ncurses pour faire une véritable interface en mode console. J'ai donc décidé d'essayer.

    Malheureusement les HOW TO en anglais ne sont pas très parlant pour moi. Et je ne trouve nul part comment faire pour creer deux fenetres avec une bordure. J'entend par la creer une fenetre de 10 lignes de hauteur pour la placer en haut de la fenetre principale (stdscr) puis mettre une bordure à chaque fenetre.

    Mais je ne parviens pas à voir ma fenetre test et je ne comprend pas pourquoi. Si quelqu'un pouvait éclairer ma lanterne .

    Merci d'avance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    #include <ncurses.h> 
    #include <stdio.h>
     
     int main() { 
     
    	long row,col; 
    	char car;
    	WINDOW * test;
     
    	/* On initialise l’ecran */ 
    	initscr() ; 
     
    	/* Creation de la bordure de la fenetre principale */
    	box(stdscr,ACS_VLINE,ACS_HLINE) ;
     
    	/* Recuperation de la taille du terminal */
    	getmaxyx(stdscr,row,col) ;
     
    	/* Creation de ma fenetre pour le titre */
    	test = newwin(10, col, 0, 0);
     
    	/*Creation de sa bordure */
     
    	box(test,ACS_VLINE,ACS_HLINE);
     
    	/* Actualisation */
    	refresh();
     
    	/* Juste histoire de voir le resultat */
    	getch();
     
    	mvprintw(row/2,(col - 14)/2,"Hello World !") ;
     
    	refresh();
     
    	getch();
     
    	/* On quitte le mode plein ecran proprement */ 
     	endwin() ; 
     	return(0) ; 
    }

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Bonsoir,

    Citation Envoyé par Trivol
    [...] Malheureusement les HOW TO en anglais ne sont pas très parlant pour moi. [...]
    Parce qu'ils sont en anglais ou pour une autre raison ?

    http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/ ?
    http://ariffart.club.fr/ncurses/ncurses02.html ?

    Citation Envoyé par Trivol
    Mais je ne parviens pas à voir ma fenetre test [...]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    #include <ncurses.h> 
    #include <stdio.h>
     
     int main() { 
     
    	long row,col; 
    	char car;
    	WINDOW * test;
     
    	/* On initialise l’ecran */ 
    	initscr() ; 
     
    	/* Creation de la bordure de la fenetre principale */
    	box(stdscr,ACS_VLINE,ACS_HLINE) ;
     
    	/* Recuperation de la taille du terminal */
    	getmaxyx(stdscr,row,col) ;
     
    	/* Creation de ma fenetre pour le titre */
    	test = newwin(10, col, 0, 0);
     
    	/*Creation de sa bordure */
     
    	box(test,ACS_VLINE,ACS_HLINE);
     
    	/* Actualisation */
    	refresh();
     
    	/* Juste histoire de voir le resultat */
    	getch();
     
    	mvprintw(row/2,(col - 14)/2,"Hello World !") ;
     
    	refresh();
     
    	getch();
     
    	/* On quitte le mode plein ecran proprement */ 
     	endwin() ; 
     	return(0) ; 
    }
    Je ne connais pas ncurses et n'ai pas essayé, mais il me semble que :
    - row et col devraient être des int ;
    - pour être propre, il faudrait aussi faire un "delwin(test);".
    J'ai aussi lu : "Windows cannot overlap with each other. Therefore you have two options: only use stdscr and no other windows, or create several non-overlapping windows but do not use stdscr".

    Désolé de ne pouvoir plus pour l'instant (je vais me coucher ).

    Cordialement,
    DS.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 9
    Par défaut
    Citation Envoyé par David.Schris
    Hum, effectivement déjà ils sont en anglais. J'ai beau avoir un bon niveau ce n'est pas toujours évident. Mais surtout pour un débutant en C (ou presque) ce n'est pas évident à comprendre

    Citation Envoyé par David.Schris
    lu : "Windows cannot overlap with each other. Therefore you have two options: only use stdscr and no other windows, or create several non-overlapping windows but do not use stdscr".
    Je développe sur Mac os X donc je ne devrais pas avoir ce problème normalement.

    Citation Envoyé par David.Schris
    Désolé de ne pouvoir plus pour l'instant (je vais me coucher ).
    Bonne nuit et merci quand même

  4. #4
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par Trivol
    Hum, effectivement déjà ils sont en anglais. J'ai beau avoir un bon niveau ce n'est pas toujours évident. Mais surtout pour un débutant en C (ou presque) ce n'est pas évident à comprendre
    Evidemment, Ncurses n'est qu'une API, et sont utilisation repose sur une bonne maitrise du C. Si tu as déjà une niveau de base en anglais, c'est profitable de se forcer à lire au début les documents techniques en anglais. Cela ne peu qu'être profitable pour la suite (tu multiplie le nombre de documents auxquels tu as accès par un facteur 10-20 min.)

    Sinon, j'ai le projet de rédiger un tutoriel en français sur la manière de réaliser des UI en mode texte portables avec PDcurses. Mais pour le moment, ce n'est qu'à l'état de brouillon.
    Citation Envoyé par Trivol
    Je développe sur Mac os X donc je ne devrais pas avoir ce problème normalement.
    Dans le contexte, Windows signifiait fenêtres et pas Windows au sens Microsoft du terme.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo