Mettre un texte ou une valeur en couleur

Résolu/Fermé
k_lam - 19 mai 2019 à 17:39
 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.

1 réponse

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 20 mai 2019 à 10:00
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 :

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


Dal
0
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 !!!!
0