Couleur console [Résolu]

Signaler
Messages postés
80
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
16 avril 2008
-
 cdc1604 -
commen fait ton pour changer par exemple tte la couleur de la console
pour changer un caractere une chaine ds la console
A voir également:

21 réponses

Messages postés
458
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
19 décembre 2008
5
Désolé, j'etais pas la cet apres midi.
Donc HANDLE dans windows.h, et csbiInfo de type CONSOLE_SCREEN_BUFFER_INFO.
Voir MSDN pour plus d'infos. Si d'autres problemes d'utilisation, ne pas hésiter, marche tres bien chez moi.

Pour Linux, regarder les caractères d'échappements. (juste une petite note si jamais qqun tombe sur le topic et cherche pour linux).

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
Messages postés
458
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
19 décembre 2008
5
Pour effacer un caractère, tu n'as qu'a réécrire sur ce caractère un espace. Tu peux te positionner à un endroit dans la console,tu peux utiliser la fonction SetConsoleCursorPosition.

Pour linux, non, il n'y a pas le fichier d'en tete windows.h et les fonctions que je te décris n'existe pas sous linux.
Voici quelques caractères d'échappement qui te permettent de faire de la couleur, ou de te positionner sous une console linux:

//Premier plan
'\033[30m black \033[m'

'\033[31m red \033[m'

'\033[32m green \033[m'

'\033[33m yellow \033[m'

'\033[34m blue \033[m'

'\033[35m magenta \033[m'

'\033[36m cyan \033[m'

'\033[37m white \033[m'

//Arrirere plan
'\033[40m black \033[m'

'\033[41m red \033[m'

'\033[42m green \033[m'

'\033[43m yellow \033[m'

'\033[44m blue \033[m'

'\033[45m magenta \033[m'

'\033[46m cyan \033[m'

'\033[47m white \033[m'

Par contre je ne retrouve plus celle pour se positionner, je regarde et te dis des que je l'ai retrouvé.

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
Messages postés
458
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
19 décembre 2008
5
Regarde SetConsoleTextAttribute.
Voici un exemple d'utilisation:

void ecrireCar(int couleur, char caractere)
{
HANDLE HCmd = GetStdHandle(STD_OUTPUT_HANDLE); //on creer un handle de sortie sur le cmd.

GetConsoleScreenBufferInfo(HCmd, &csbiInfo); //on prends les infos du cmd et on les stocks
SetConsoleTextAttribute(HCmd, (short) (couleur | FOREGROUND_INTENSITY));
printf("%c", caractere);
SetConsoleTextAttribute(HCmd, csbiInfo.wAttributes); // on remet les anciens attributs au cmd
}

Pour les infos de couleur, il n'y a que trois valeurs possibles, mais en les mélangeant, tu arrives à 8 couleurs différentes:
FOREGROUND_RED; FOREGROUND_GREEN; FOREGROUND_BLUE 


Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
Messages postés
755
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
30 janvier 2011

sinon pour toute la console,

system("color 0A");

qui te fera, un fond noir 0 et un text vert fluo A voila :)
Messages postés
80
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
16 avril 2008

HANDLE C'est dans quelle bibliothèques
Messages postés
80
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
16 avril 2008

je pense que c ds windows.h a oui, il faut le declarer ds le main de quel type? csbiInfo
Messages postés
80
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
16 avril 2008

le compilateur ne reconnait pas csbiInfo
Messages postés
80
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
16 avril 2008

C BON JAI RESOLU LE PB
Messages postés
80
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
16 avril 2008

commen fait ton pour effacer un caractere sur la console
Messages postés
80
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
16 avril 2008

la je boss sur devc est ec que sur linux ya la biblio windows.h???
Messages postés
80
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
16 avril 2008

Sous linux si par exemple je me resers de la biblio windows.h je la met ds mon repertoire et je la lapelle de la maniere suivante sds mon prog #include"windows.h"
est ce que je pourrais utiliser le schangements de couleurs???
car mon projet devra etre fais sur linux mon professeur veriffira si sa marche bien sur linux il compilera sir linux(lol la je croi que tt le mon de a compris
Messages postés
458
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
19 décembre 2008
5
Non, c'est impossible.
windows.h porte bien son nom, elle est définie pour windows. Elle fait appel à des fonctions qui sont dans des librairies et dll qu'on ne trouve que sous windows, pas sous linux.
Sous linux, le seul moyen de faire que je connaisse c'est de passer par les séquences d'échappement. Sinon, il doit bine y avoir quelques librairies graphiques pour linux qui permettent de le faire, mais ce ne sera que compliqué la chose.

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
Messages postés
80
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
16 avril 2008

commen on se sert de ces caracteres despacement

'\033[46m cyan \033[m'
comme sa printf("
%d",033[46m cyan \033[m');
lol je sais pas trop
a oui o faite system("cls");
ezst ce qu'on peut utiliser cette instruction sous linux
Messages postés
458
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
19 décembre 2008
5
system("clear"); sous linux.
J'ai retrouvé sous linux comment se déplacer dans la console, tu adapteras avec les autres séquences d'échapemment.
#define gotopos(x, y) printf("\033[%d;%dH", x, y)

donc pour mettre ton texte en rouge par exemple
#define red() printf("\033[31m");
Il me semble que ca doit marher, ca fait un bail que j'ai pas fait de console linux, et j'ai pas mes vieux exemples sous la main. Si c'est pas ca, tu redemandes, je te dirais Lundi.

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
Messages postés
80
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
16 avril 2008

'\033[40m black \033[m'
'\033[41m red \033[m'
'\033[42m green \033[m'
'\033[43m yellow \033[m'
'\033[44m blue \033[m'
'\033[45m magenta \033[m'
'\033[46m cyan \033[m'
'\033[47m white \033[m'

est ce qu'on pe tester sa sur dec++ car je boss sur devc je devré ladapter sur unix ensuite ms lessentiel c que sa marche sur linux
et est ce quil fo une Biblio pr utiliser ces instruction
#define red() printf("\033[31m");
puis ds le main je met
red();
le pb c que a la compilation jobtient
Messages postés
458
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
19 décembre 2008
5
Ben pour tester ces fonction,s faudra que tu developpes sous linux. A la limite tu as cygwin qui emule un linux sur windows.
Tu te fais un fichier d'en tete (fichier avec extension en .h) dans lequel tu mets les differents define dont tu as besoin.
Ca sert a rien de dev sur windows si ca doit touirner sous linux, tu peux rien tester. Ou alors tu developpes que avec du C standard et tu oublies toutes les particularités des systemes, ca veut aussi dire pas de couleurs.
Voila, je peux pas dire grand chose d'autre. POur l'aspect graphique, ben tu regarderas quand tu pourras etre sous linux, sinon c'est meme pas la peine.

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
Messages postés
80
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
16 avril 2008

MERCI
Messages postés
80
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
16 avril 2008

jai ENCOR un petit probleme je vien de passer sur MANDRIVA
et je dois adapter tt ce que jai fé sur cette distribution
deja pour effacer tout ce qu'il y a sur la console je me servais sous devc ++ de system("cls"); sa marchait
mais maintenant quand je fais sous linux system("clear") sa marche pas il se passe rien
jai mem essayer system(" reset"); IDEM
a oui aussi pour afficher un texte au fur et a mesure je me servait
entre chque caratere de
sleep(255) sous time.h
et la a lidentique sa marche plus
sinon pour els couleur j'y arriV si qqun PEUT MAIDER
Messages postés
80
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
16 avril 2008

REPONDAIT MOIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
Messages postés
458
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
19 décembre 2008
5
Je suis désolé, mais MANDRIVA je connais pas du tout.
Je suis surpris que le system("clear") ne marche pas. Il me semblait que ça devait fonctionner sous tout linux.

Vive le C Tchao ["mailto:julienbj@hotmail.com" Savon]
1 2