Afficher en couleur

Fermé
yvoyuuta Messages postés 9 Date d'inscription lundi 30 décembre 2013 Statut Membre Dernière intervention 7 mai 2014 - Modifié par yvoyuuta le 4/01/2014 à 23:59
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 - 8 janv. 2014 à 14:09
Bonjour,

je viens de terminer un TP qu'on nous a demandé de faire, et j'aimerai bien modifier la couleur de certains chiffres.
Bon, j'ai utilisé system("color"), mais cette fonction applique la couleur a tout le texte et moi je veux que certains chiffres soient en couleurs différentes. Que dois-je faire?

Merci de me donner vos solutions, je suis sous windows et j'utilise CodeBlocks.
A voir également:

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
5 janv. 2014 à 10:39
Bonjour,

system() est une fonction à éviter. A la place, tu peux plutôt utiliser : SetTextColor() (puisque j'imagine que tu es sur Windows).
Ou sinon tu peux t'installer la bibliothèque PDCurses qui te permettra de faire plein de choses sympas.
Cdlt,
0
yvoyuuta Messages postés 9 Date d'inscription lundi 30 décembre 2013 Statut Membre Dernière intervention 7 mai 2014
5 janv. 2014 à 13:09
Bonjour,

j'ai essayer SetTextColor() ça marche pas, le compilateur ne reconnait pas la fonction, je crois qu'il faut inclure une bibliothèque ?
De plus ce que je veux savoir c'est comment afficher dans une même ligne différentes couleurs, et le mieux serai de pouvoir attribuer a une variable une couleur (a chaque affichage elle s'affiche avec cette couleur) si c'est possible!

Merci.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
5 janv. 2014 à 14:35
Il faut :
#include <windows.h>

Mais aussi ajouter gdi32 lors du linking.
De plus ce que je veux savoir c'est comment afficher dans une même ligne différentes couleurs
Ben, avec SetTextColor() (à essayer, je n'utilise pas).

Cdlt,
0
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
Modifié par [Dal] le 8/01/2014 à 14:28
Bonjour yvoyuuta,

Sauf erreur, SetTextColor() est pour le texte affiché dans une fenêtre GUI, pas pour la console.

Pour la console, sous Windows, c'est plutôt SetConsoleTextAttribute() que tu utiliseras si tu ne veux pas installer la bibliothèque PDCurses ou une autre.

Tu as du code d'exemple là : https://docs.microsoft.com/en-us/windows/console/using-the-high-level-input-and-output-functions?redirectedfrom=MSDN

Sur la base de ce code, tu peux faire comme cela, par exemple, pour afficher une ligne avec un mot en rouge au milieu :

#include <stdio.h>
#include <windows.h>

int main(void)
{
    HANDLE hStdout;
    CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
    WORD wOldColorAttrs;

    /* écrire vers STDOUT un début de phrase */
    printf("Cette phrase comporte un mot en ");

    /* obtenir un handle vers STDOUT */
    hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
    if (hStdout == INVALID_HANDLE_VALUE)
    {
        MessageBox(NULL, TEXT("GetStdHandle"), TEXT("Console Error"),
                   MB_OK);
        return 1;
    }

    /* sauvegarde de la couleur actuelle */
    if (! GetConsoleScreenBufferInfo(hStdout, &csbiInfo))
    {
        MessageBox(NULL, TEXT("GetConsoleScreenBufferInfo"),
                   TEXT("Console Error"), MB_OK);
        return 1;
    }
    wOldColorAttrs = csbiInfo.wAttributes;

    /* modifier la couleur en rouge sur fond noir */
    if (! SetConsoleTextAttribute(hStdout, FOREGROUND_RED |
                                  FOREGROUND_INTENSITY))
    {
        MessageBox(NULL, TEXT("SetConsoleTextAttribute"),
                   TEXT("Console Error"), MB_OK);
        return 1;
    }

    /* écrire en rouge */
    printf("rouge");

    /* restaurer la couleur d'origine */
    SetConsoleTextAttribute(hStdout, wOldColorAttrs);

    /* écrire le reste de la phrase */
    printf(", et un seul\n");

    return 0;
}


Sur mon Codeblocks, avec MinGW, il suffit de faire
#include <windows.h>
, sans qu'il soit nécessaire de préciser autre chose dans les paramètres de liaison.


Dal
0