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 :

[Multi-plateforme] [Console] Mettre de la couleur.


Sujet :

C++

  1. #1
    Membre averti

    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 177
    Points : 321
    Points
    321
    Par défaut [Multi-plateforme] [Console] Mettre de la couleur.
    Bonjour à vous tous! Je voulais savoir comment ajouter de la couleur dans une console en c++. Sans utiliser la fonction printf. Merci!

    C'est pour faire du checking à l'initialisation du programme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Initialisation des variables : OK


  2. #2
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    Y'a rien de standard en C++... Ca sera plateforme dependant
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  3. #3
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    J'ai entendu parler d'une bibliothèque pour faire ce genre de chose, qui existerait pour plusieurs plateformes. Je n'ai jamais essayé, et ne sais pas si elle prend en compte la couleur, ou simplement le positionnement. Je crois qu'elle va plus loin, permettant de définir de vraies IHM fenêtrées en mode texte.

    Elle se nomme ncurses
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  4. #4
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    Ouaip ncurses est la référence sur les systémes unixoide il me semble. Le portage sous windows s'appelle pdcurses.
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  5. #5
    Membre averti

    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 177
    Points : 321
    Points
    321
    Par défaut
    Dommage, mais je préfère à la limite une seule librairie. Je vais devoir m'en passer. Je vais me renseigner sur ncurses, si je peux le faire juste sous Linux, Windows s'en passera. Merci de vos réponses.


  6. #6
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Entre pdcurses et (n)curses, tu ne devrait pas voir de différence dans ton code.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  7. #7
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 064
    Points
    219 064
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Voici un code qui permet de faire ce que vous demandez.
    J'ai pas dit qu'il était parfait, je n'ai juste pas encore eu de problème avec :s

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
    #ifndef __COLOURS_HPP__
     
    #define __COLOURS_HPP__
     
     
     
    #if defined(linux) || defined(__linux) || defined(__linux__)
     
     
    	#define C_LIGHTBLACK		30
    	#define C_LIGHTRED		31
    	#define C_LIGHTGREEN		32
    	#define C_LIGHTYELLOW	33
    	#define C_LIGHTBLUE		34
    	#define C_LIGHTPURPLE	35
    	#define C_LIGHTCYAN		36
    	#define C_LIGHTWHITE	37
     
    	#define C_BACKBLACK		40
    	#define C_BACKRED		41
    	#define C_BACKGREEN		42
    	#define C_BACKYELLOW	43
    	#define C_BACKBLUE		44
    	#define C_BACKPURPLE	45
    	#define C_BACKCYAN		46
    	#define C_BACKWHITE		47
     
    	#define C_DEFAULT		0
    	#define C_BRIGHT		1
    	#define C_BLINK		5
     
    #endif
     
    #if defined(__WIN32__) || defined(WIN) || defined(WIN32)
     
    	#define C_LIGHTBLACK	0
    	#define C_LIGHTRED		4
    	#define C_LIGHTGREEN	2
    	#define C_LIGHTYELLOW	14
    	#define C_LIGHTBLUE		1
    	#define C_LIGHTPURPLE	5
    	#define C_LIGHTCYAN		11
    	#define C_LIGHTWHITE	15
     
     
    	#define C_BACKBLACK		0
    	#define C_BACKRED		4
    	#define C_BACKGREEN		2
    	#define C_BACKYELLOW	14
    	#define C_BACKBLUE		1
    	#define C_BACKPURPLE	5
    	#define C_BACKCYAN		11
    	#define C_BACKWHITE		15
     
     
    	#define C_DEFAULT		0
    	#define C_BRIGHT		+8
    	#define C_BLINK		6
     
    #endif
     
     
     
    #ifdef __cplusplus
    	#if defined(linux) || defined(__linux) || defined(__linux__)
    		#define COLOURF(cletter) "\033[" << cletter << "m"
    		#define COLOURFB(cletter,background) "\033[" << cletter << "," << background << "m"
     
    		#define CRESET() "\033[0m"
    	#endif
     
    	#if defined(__WIN32__) || defined(WIN) || defined(WIN32)
    		#define COLOURF(cletter) ""; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),cletter); std::cout
    		#define COLOURFB(cletter,background) ""; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),background*16+cletter); std::cout
     
    		#define CRESET() ""; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15); std::cout
    	#endif
     
    #else
     
    #if defined(linux) || defined(__linux) || defined(__linux__)
    		#define COLOURF(cletter) printf("\033[%dm",cletter);
    		#define COLOURFB(cletter,background) printf("\033[%d,%dm",cletter,background);
    		#define CRESET() printf("\033[0m");
    	#endif
    	#if defined(__WIN32__) || defined(WIN) || defined(WIN32)
    		#define COLOURF(cletter) ""; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),cletter); std::cout
    		#define COLOURFB(cletter,background) ""; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),background*16+cletter); std::cout
    		#define CRESET() ""; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15); std::cout
     
    	#endif
     
    #endif
     
    #endif
    ( Si quelqu'un à des remarques à faire à propos du code, qu'il n'hésite pas )
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. mettre de la couleur en console
    Par fullben dans le forum C++
    Réponses: 5
    Dernier message: 28/01/2007, 17h09
  2. Outils de développement multiplateforme
    Par jibe74 dans le forum Outils pour C & C++
    Réponses: 27
    Dernier message: 30/10/2006, 00h04
  3. Comment mettre de la couleur à un TPanel ?
    Par bertrand_declerck dans le forum Composants VCL
    Réponses: 11
    Dernier message: 21/08/2005, 12h11
  4. mettre de la couleur dans une cellule
    Par Jiraiya42 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 03/06/2005, 10h16
  5. Quel lg et IDE pour dev 1 appli multi-plateformes?
    Par Langelot dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 03/02/2005, 23h36

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