Menu

Mettre un texte ou une valeur en couleur [Résolu]

- - Dernière réponse :  k_lam - 20 mai 2019 à 15:48
Bonjour à tous, je suis étudiant en première année et je dois créer un programme en utilisant les couleurs des textes sous window. J'ai été sur plusieurs forum pour essayer de comprendre et j'ai essayé toutes les méthodes proposées… fin celle qui marchait avec mon ordi c'était :

system("color 02");

sauf que le problème c'est que ca met de la couleur partout bien sûr.
Je voulais alors savoir s'il existait un text("color 02") ou autre chose dans ce style qui pourrait marcher.
Merci de votre attention.
Afficher la suite 

1 réponse

Messages postés
5139
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
25 juin 2019
779
0
Merci
Salut k_lam,

Tu peux utiliser les fonctions de l'API Windows :

https://docs.microsoft.com/en-us/windows/console/setconsoletextattribute

tu as un exemple, qui montre comment utiliser la fonction
SetConsoleTextAttribute()
(et d'autres) là :

https://docs.microsoft.com/en-us/windows/console/using-the-high-level-input-and-output-functions

Si on retire de cet exemple de code les parties qui ne concernent pas cette fonction et qu'on retire les contrôles d'erreurs pour plus de clarté, on peut arriver à cet exemple simplifié :

#include <stdio.h>
#include <windows.h> 
 
int main(void) {
    CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
    HANDLE hStdout; 
    WORD wOldColorAttrs;
    
    /* obtenir un handle sur la console */
    hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
    
    /* sauvegarder les couleurs par défaut */
    GetConsoleScreenBufferInfo(hStdout, &csbiInfo);
    wOldColorAttrs = csbiInfo.wAttributes; 
    
    /* changer les couleurs en texte rouge sur fond noir */
    SetConsoleTextAttribute(hStdout, FOREGROUND_RED | FOREGROUND_INTENSITY);
    printf("texte rouge sur fond noir\n");
    
    /* restaurer les couleurs par défaut */
    SetConsoleTextAttribute(hStdout, wOldColorAttrs);
    
    return 0;
}

(non testé, je ne suis pas sous Windows)

Les couleurs sont déterminées par les combinaisons des constantes définies là :

https://docs.microsoft.com/en-us/windows/console/console-screen-buffers#_win32_character_attributes

Si tu as besoin de beaucoup de couleurs, et que tu ne veux pas passer ton temps à deviner quelles combinaisons des attributs de base arrivent à une couleur proche de celles que tu recherches, tu peux te servir de cette fonction de façon détournée comme proposé dans ce code :

http://forums.codeguru.com/showthread.php?539241-RESOLVED-can-anyone-tell-me-all-colors-const-for-SetConsoleTextAttribute%28%29-function=&p=2127215#post2127215


Dal
En effet ça marche bien sur Windows après je pensais pas qu'il fallait tout ça pour afficher un texte en couleur ahah.

Sinon merci du coup de main !!!!
Commenter la réponse de [Dal]