Couleur console

Résolu
sy3ns Messages postés 80 Date d'inscription lundi 20 février 2006 Statut Membre Dernière intervention 16 avril 2008 - 17 mars 2006 à 10:14
 cdc1604 - 15 janv. 2008 à 11:03
commen fait ton pour changer par exemple tte la couleur de la console
pour changer un caractere une chaine ds la console

21 réponses

julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
17 mars 2006 à 18:19
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]
3
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
18 mars 2006 à 14:44
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]
3
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
17 mars 2006 à 11:37
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]
0
wxccxw Messages postés 755 Date d'inscription samedi 15 mai 2004 Statut Membre Dernière intervention 30 janvier 2011
17 mars 2006 à 12:32
sinon pour toute la console,

system("color 0A");

qui te fera, un fond noir 0 et un text vert fluo A voila :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sy3ns Messages postés 80 Date d'inscription lundi 20 février 2006 Statut Membre Dernière intervention 16 avril 2008
17 mars 2006 à 13:50
HANDLE C'est dans quelle bibliothèques
0
sy3ns Messages postés 80 Date d'inscription lundi 20 février 2006 Statut Membre Dernière intervention 16 avril 2008
17 mars 2006 à 14:03
je pense que c ds windows.h a oui, il faut le declarer ds le main de quel type? csbiInfo
0
sy3ns Messages postés 80 Date d'inscription lundi 20 février 2006 Statut Membre Dernière intervention 16 avril 2008
17 mars 2006 à 14:46
le compilateur ne reconnait pas csbiInfo
0
sy3ns Messages postés 80 Date d'inscription lundi 20 février 2006 Statut Membre Dernière intervention 16 avril 2008
17 mars 2006 à 14:52
C BON JAI RESOLU LE PB
0
sy3ns Messages postés 80 Date d'inscription lundi 20 février 2006 Statut Membre Dernière intervention 16 avril 2008
18 mars 2006 à 13:47
commen fait ton pour effacer un caractere sur la console
0
sy3ns Messages postés 80 Date d'inscription lundi 20 février 2006 Statut Membre Dernière intervention 16 avril 2008
18 mars 2006 à 13:48
la je boss sur devc est ec que sur linux ya la biblio windows.h???
0
sy3ns Messages postés 80 Date d'inscription lundi 20 février 2006 Statut Membre Dernière intervention 16 avril 2008
18 mars 2006 à 15:40
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
0
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
18 mars 2006 à 16:34
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]
0
sy3ns Messages postés 80 Date d'inscription lundi 20 février 2006 Statut Membre Dernière intervention 16 avril 2008
18 mars 2006 à 21:30
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
0
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
18 mars 2006 à 21:43
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]
0
sy3ns Messages postés 80 Date d'inscription lundi 20 février 2006 Statut Membre Dernière intervention 16 avril 2008
19 mars 2006 à 00:55
'\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
0
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
19 mars 2006 à 01:10
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]
0
sy3ns Messages postés 80 Date d'inscription lundi 20 février 2006 Statut Membre Dernière intervention 16 avril 2008
19 mars 2006 à 10:42
MERCI
0
sy3ns Messages postés 80 Date d'inscription lundi 20 février 2006 Statut Membre Dernière intervention 16 avril 2008
28 mars 2006 à 12:35
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
0
sy3ns Messages postés 80 Date d'inscription lundi 20 février 2006 Statut Membre Dernière intervention 16 avril 2008
29 mars 2006 à 20:06
REPONDAIT MOIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
0
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
29 mars 2006 à 21:24
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]
0
Rejoignez-nous