Mettre un texte ou une valeur en couleur

Résolu
k_lam -  
 k_lam -
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 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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
k_lam
 
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