Effectuer des sorties en couleur, déplacer le curseur etc… avec printf et le pilote ansi.sys [tous compilateurs]

Soyez le premier à donner votre avis sur cette source.

Snippet vu 15 223 fois - Téléchargée 38 fois

Contenu du snippet

La fonction printf permet beaucoup de chose mais ne permet pas par exemple d’afficher du texte en couleur ou d’effacer l’écran. Mais il existe certainement un pilote nommé ANSI.SYS dans votre ordinateur qui peu permettre d’effectuer de telles manipulations. D’abord, avant de s’en servir il faut l’installer, pour cela, inscrivez la ligne suivante dans le fichier config.sys.
DEVICE=C:\dos\ansi.sys
Voici les différentes possibilités que vous avez avec ce pilote.

Afficher des couleurs :
[30m : lettre noir
[31m : lettre rouge
[32m : lettre verte
[33m : lettre orange
[34m : lettre bleu
[35m: lettre magenta
[36m: lettre cyan
[37m: lettre blanc
[40m: fond noir
[41m: fond rouge
[42m: fond vert
[43m: fond orange
[44m: fond bleu
[45m: fond magenta
[46m: fond cyan
[47m: fond blanc

Positionner le curseur :
[x ;yM : Positionne le curseur au coordonnées x,y
[xA : Déplace le curseur de x lignes vers le haut
[xB : Déplace le curseur de x lignes vers le bas
[xC : Déplace le curseur de x colonnes vers la droite
[xD : Déplace le curseur de x colonnes vers la gauche
[s : Enregistre la position du curseur
[u : Place le curseur à la position enregistrée

Effacer l’écran : [2j

Installer un mode d’affichage :
[0h : 40*25 Monochrome
[1h : 40*25 Couleur (texte)
[2h : 80*25 Monochrome
[3h : 80*25 Couleur (texte)
[4h : 320*200 Couleur (graphique)
[5h : 320*200 4 Couleurs (graphique)
[6h : 640*200 Monochrome
[7h : 640*200 Couleur (texte)
[13h : 320*200 Couleur (graphique)
[14h : 640*200 16 Couleurs (graphique)
[15h : 640*350 Monochrome
[16h : 640*350 16 Couleurs (graphique)
[17h : 640*480 16 Couleurs (graphique)
[19h : 320*200 256 Couleurs (graphique)

Effacer l’écran : [2J

Attention il faut mettre le caractère Esc ou \033 avant tous ces codes.
Voyez le code source pour voir comment cela marche.

Source / Exemple :


#include<stdio.h>
#include<conio.h>

int main()
{
      printf("\033[16h");
      printf("\033[32mBonjour \033[3B"); //Affiche bonjour en vert et saute 3 lignes
      printf("\033[45;32mBonjour");  //Affiche Bonjour en vert sur fond magenta
      getch(); //Attend la saisie d'une touche
      printf("\033[2J"); //Remplie l'écran avec la couleur de fond définie précedemment
      getch();
      return 0;
}

Conclusion :


Le code explique bien le fonctionnement.
Si vous avez gcc sans djgpp vous ne possédez pas conio.h, remplacez alors la fonction getch() par ceci:
int lettre;

if((lettre = getchar()) == 23)
printf("\033[2J");

Si vous avez un problème écrivez moi.

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
lundi 12 novembre 2007
Statut
Membre
Dernière intervention
24 novembre 2007

merci
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
perso, je fais comme pr utiliser l'écran: tt avec le devicecontexct (CDC)

dc pr les anti MFC

on fait tt avec
++
Messages postés
2
Date d'inscription
lundi 16 février 2004
Statut
Membre
Dernière intervention
16 février 2004

en fait, je viens de m'apercevoir (en ajoutant echoconfig dans le config.nt) que ansi.sys n'est pas chargé, il y a une erreur à la ligne
device=c:\winnt\system32\ansi.sys alors que le fichier ansi.sys se trouve bien à cet endroit !!!

avez vous une solution ?
Messages postés
2
Date d'inscription
lundi 16 février 2004
Statut
Membre
Dernière intervention
16 février 2004

je developpe une appli sous une fenetre dos, sous XP et NT.

j'ai des soucis avec les codes ESCAPES,

même avec ce code, cela ne fonctionne pas !!

voici ce qu'affiche se code :

←[16h←[32mBonjour ←[3B←[45;32mBonjour

le caractere Escape n'est pas reconnu, le fichier Ansi.sys est bien chargé à l'aide de config.nt, enfin je le pense !!
y a-t-il moyen de vérifier ?
y a-t-il moyen de controler la valeur de ESCAPE utilisé par la fenetre dos de mon pc ?

Merci d'avance pour la reponse, c'est urgent...Merci
Messages postés
527
Date d'inscription
vendredi 14 septembre 2001
Statut
Membre
Dernière intervention
6 octobre 2008
3
C quand même bien pratique...
Merci
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.