Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

TEXTE DE COULEUR EN CONSOLE DOS ( VC6)


Information sur la source

Description

Cliquez pour voir la capture en taille normale
utilisation des APIs
ce code montre comment ecrire en differentes couleurs dans une console DOS32
affiche un logo en bleu clair et fait un scanne du cossier courrant  et affiche le resultat en vert.

 

Source

  • #define _WIN32_WINNT 0x0300
  • #include <windows.h>
  • #include <stdio.h>
  • #include <string.h>
  • #include <conio.h>
  • #include <shlobj.h>
  • #define PATH 0x104
  • #include <shlwapi.h>
  • #pragma comment(lib,"shlwapi.lib")
  • WIN32_FIND_DATA FileData;
  • HANDLE hSearch,fc;
  • DWORD dwAttrs;
  • BOOL fFinished = FALSE;
  • HDC hdc;
  • CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
  • char path[PATH];
  • char buffer[0x64];
  • char Buffer1[PATH];
  • char Buffer[PATH];
  • char szHome[PATH];
  • char Result[PATH];
  • char szNewPath[PATH];
  • int x=0x00;
  • void logo(){
  • SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x0b);
  • printf("ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\nº Example de couleur texte Conosle º\nº Votre nom de compagnie º\nº Adresse º\nº http://www.monsiteweb.com º\nÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\n");
  • }
  • void ScanneFolder(char * dossier){
  • SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x0a);
  • hSearch = FindFirstFile("*.*", &FileData);
  • if (hSearch == INVALID_HANDLE_VALUE) { printf("Aucun fichier trouv‚."); return;}
  • while (!fFinished) {
  • sprintf(szNewPath,"%s\\%s", dossier,FileData.cFileName); //chemin complet
  • x++; //incremente valeur de x
  • GetShortPathName(szNewPath,Buffer1,256);
  • PathCompactPath(hdc,szNewPath,200); //compactage de texte pur n'afficher que 200 pixels
  • printf("%.3d\t%s\t%s\n",x,szNewPath,Buffer1); // affiche le resultat
  • if (!FindNextFile(hSearch, &FileData)) {
  • if (GetLastError() == ERROR_NO_MORE_FILES) {
  • printf("‚num‚ration termin‚e.");
  • fFinished = TRUE;
  • } else {
  • printf("ERREUR: Impossible de trouver le fichier suivant .");
  • return;
  • }
  • }
  • }
  • FindClose(hSearch);
  • CloseHandle(fc);
  • }
  • int main(){
  • logo();
  • SetConsoleTitle("Titre de l'application");
  • GetCurrentDirectory(256,szHome);
  • ScanneFolder(szHome) ;
  • Sleep(5000); //utile pour retarder la fermeture 1s =1000
  • return 0;
  • }
#define  _WIN32_WINNT  0x0300
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <shlobj.h>
#define PATH 0x104
#include <shlwapi.h>
#pragma comment(lib,"shlwapi.lib")

WIN32_FIND_DATA FileData;
HANDLE hSearch,fc;
DWORD dwAttrs;
BOOL fFinished = FALSE;
HDC hdc;
CONSOLE_SCREEN_BUFFER_INFO csbiInfo;

char path[PATH];
char buffer[0x64];
char Buffer1[PATH];
char Buffer[PATH];
char szHome[PATH];
char Result[PATH];
char szNewPath[PATH];
int x=0x00;

void logo(){
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x0b);
	printf("ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\nº  Example de couleur texte Conosle º\nº    Votre nom de compagnie         º\nº Adresse                           º\nº http://www.monsiteweb.com         º\nÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\n");
}

void  ScanneFolder(char * dossier){
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x0a);
	hSearch = FindFirstFile("*.*", &FileData); 
        if (hSearch == INVALID_HANDLE_VALUE) {     printf("Aucun fichier trouv‚.");     return;} 
		while (!fFinished) { 
		sprintf(szNewPath,"%s\\%s", dossier,FileData.cFileName); //chemin complet
		x++; //incremente valeur de x
		GetShortPathName(szNewPath,Buffer1,256);
		PathCompactPath(hdc,szNewPath,200); //compactage de texte pur n'afficher que 200 pixels
				printf("%.3d\t%s\t%s\n",x,szNewPath,Buffer1);   // affiche le resultat
				if (!FindNextFile(hSearch, &FileData))     {
			if (GetLastError() == ERROR_NO_MORE_FILES)         { 
                                printf("‚num‚ration termin‚e."); 
				fFinished = TRUE; 
			} else   { 
            printf("ERREUR: Impossible de trouver le fichier suivant ."); 
            return;
			} 
		}
	} 
	FindClose(hSearch);
	CloseHandle(fc);     
}

int main(){
	logo();
    SetConsoleTitle("Titre de l'application");
	GetCurrentDirectory(256,szHome);
    ScanneFolder(szHome) ;
    Sleep(5000); //utile pour retarder la fermeture  1s =1000
	return 0;
}

Conclusion

je trouves moins monotone une aplis console en couleur non ?
 

Commentaires et avis

signaler à un administrateur
Commentaire de Kirua le 25/08/2004 02:15:31

il n'y a pas moyen de faire ça de manière portable?

signaler à un administrateur
Commentaire de djl le 25/08/2004 08:16:27

ce sont des appels systemes (forcement, le c ne connait pas la console), il faudrait une bibliotheque portable qui encapsule ces appels
ya ncurses sous linux et je crois que  ca va etre porté sous windows

signaler à un administrateur
Commentaire de Nebula le 25/08/2004 10:54:35

Pour les maniaques de la portabilités, y'a MinGW qui fournit un compilateur (GCC, que j'utilise) et un shell Bash (donc, qui gère les séquences ANSI, que je n'utilise pas en revanche). Et pour les maniaques du portable instable, y'a Cygwin :p

signaler à un administrateur
Commentaire de douggyfresh le 26/08/2004 18:46:48

Je n'en peux dire trop, car j'ai copie la source puis essaye de la compiler sous Borland C++ 5.01. Ben, ca ne marche pas. Donc, avec quel compilateur ca marche? Et comment peut on la rendre compatible avec Borland C++ 5.01.

signaler à un administrateur
Commentaire de Papy67 le 27/08/2004 05:14:04

douggyfresh -> pour info ca ete ecris avec VC6
ton pb prvient probablement de l'entete :
shlwapi.h
suis pas sur que Borland la fournisse
vire du code :
#include <shlwapi.h>
#pragma comment(lib,"shlwapi.lib")
et dans la fonction ScanneFolder
// PathCompactPath(hdc,szNewPath,200);

signaler à un administrateur
Commentaire de rosco91 le 01/06/2007 16:11:19

Trés joli source!!! Et comment fait-on si l'on veut copier une seule phrase en couleur??

Merci d'avance..

signaler à un administrateur
Commentaire de Papy67 le 08/06/2007 20:59:11

rosco91

tu utilise la fonction

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x0b);//id de la couleur desiree
printf("tapes ton texte\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0xFF);//poru recuperer ton prompteur en blanc :)

signaler à un administrateur
Commentaire de rosco91 le 11/06/2007 08:47:05

ok!! Ben merci beaucoup pour m'avoir répondu. Je n'avais pas pensé à cette technique, elle n'est pas mauvaise!!! Encore une fois merci!!

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,16 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.