Couleurs en C
Résolu
Strat
-
Strat -
Strat -
Bonjour,
Existe-il un moyen d'afficher du texte en couleur MAIS de manière à ce que le code marche à la fois sous Linux et Windows ?
Merci d'avance
Existe-il un moyen d'afficher du texte en couleur MAIS de manière à ce que le code marche à la fois sous Linux et Windows ?
Merci d'avance
A voir également:
- Couleurs en C
- La boite à couleurs - Télécharger - Divers Photo & Graphisme
- Remettre les couleurs d'origine android - Forum LG
- Mise en forme conditionnelle excel couleur - Guide
- Légende couleurs google maps - Accueil - Transports & Cartes
- L'en-tête du document comporte une information qui n’apparaît pas à l'impression car elle est de couleur blanche. de quelle information s'agit-il ? ✓ - Forum Bureautique
2 réponses
'lut, non, pas directement, c'est-à-dire pas sans bibliothèque externe (
Là où sous UNIX/Max OS/Linux il faut juste sortir un caractère d'échappement (
Voici un exemple sous Windows:
ncursespar ex) ou sans utiliser de
#defines.
Là où sous UNIX/Max OS/Linux il faut juste sortir un caractère d'échappement (
\033) puis un code de format derrière, sous Windows, bah comme tout sur cet OS, tu te tapes 7 lignes de WinAPI pour arriver à tes fins.
Voici un exemple sous Windows:
#include <stdio.h>
#include <windows.h>
int main() {
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO consoleInfo;
WORD saved_attributes;
GetConsoleScreenBufferInfo(hConsole, &consoleInfo);
saved_attributes = consoleInfo.wAttributes;
SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE);
printf("Je suis en bleu\n");
SetConsoleTextAttribute(hConsole, saved_attributes);
return 0;
}Et un sous UNIX/Mac OS/Linux:
#include <stdio.h>
int main() {
printf("\033[34mJe suis en bleu\n\033[0m");
return 0;
}Après donc tu peux utiliser des #definea gogo
#ifdef _WIN32
#define BLUE FOREGROUND_BLUE
#define InitTextColor() HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); \
CONSOLE_SCREEN_BUFFER_INFO consoleInfo; \
WORD saved_attributes; \
GetConsoleScreenBufferInfo(hConsole, &consoleInfo); \
saved_attributes = consoleInfo.wAttributes; \
SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE);
#define TextColor(x) SetConsoleTextAttribute(hConsole, x);
#define ResetTextColor() SetConsoleTextAttribute(hConsole, saved_attributes);
#else
#define InitTextColor()
#define BLUE 34
#define TextColor(x) printf("\033[ ## x ## m");
#define ResetTextColor() printf("\033[0m");
#endif
#include <stdio.h>
int main() {
InitTextColor();
TextColor(BLUE);
printf("Je suis en bleu\n");
ResetTextColor();
return 0;
}Pas testé hein, mais tu comprends l'idée ;)