begin process at 2012 05 30 09:19:04
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Systeme

 > 

setConsoleTextAttribute : bug ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

setConsoleTextAttribute : bug ?

vendredi 15 août 2003 à 21:42:11 | setConsoleTextAttribute : bug ?

Bids

Bonjour,

Je me sers actuellement de la fonction setConsoleTextAttribute dans une application en mode console, pour modifier la couleur du texte affiche.
Cela fonctionne au premier abord, mais etrangement apres qq dizaines d'affichages, le comportement de la couleur du texte devient anormale, le couleur du texte n'est plus respectee et redevient grise.

Le code (bidon...) ci-dessous produit cet effet, sur au moins deux systemes (win98 et win NT4)

for(int i=0 ; i < 25 ; i++)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |
FOREGROUND_RED | FOREGROUND_GREEN);

printf("This is a test\n");

Sleep(500);

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |
FOREGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE |
FOREGROUND_RED | FOREGROUND_BLUE);

printf("This is a test\n");

Sleep(500);
}

Mon analyse est la suivante : apparemment l'appel a SetConsoleTextAttribute semble avoir un effet limite aux caracteres dont les coordonnees ne sont pas hors des limites de la fenetre console initiale (typiquement 25*80 caracteres). Des que l'on affiche des caracteres supplementaires qui amenent a faire scroller le texte, l'effet de seConsoleTextAttribute s'evapore....

Quelqu'un pourrait-il m'expliquer ce phenomene, et comment le contourner pour pouvoir ecrire une application qui fait des sorties en couleur dans une console, sur des centaines de lignes successives ?

Merci d'avance !



samedi 16 août 2003 à 14:32:03 | Re : setConsoleTextAttribute : bug ?

neodante

Administrateur CodeS-SourceS

Neodante

J'ai eu un problème similaire, par conséquent maintenant j'efface l'écran ou je remet le curseur en haut (cf une de mes sources (et la plus merdique -> gestion d'employés avec console + APIs ... ou un truc dans ce genre sur le site))
@+
dimanche 17 août 2003 à 21:11:32 | Re : setConsoleTextAttribute : bug ?

Bids

Merci...mais ca confirme plutot mon intuition, pas moyen d'avoir une console avec des quantites de logs "qui defilent"
sur plusieurs ecrans, et une gestion des couleurs correcte :(

J'ai tente une immonde bidouille consistant a faire scroller l'ecran de la console d'une ligne avec un truc du genre printf("\n"), puis de faire l'appel a SetConsoleTextAttribute AVANT d'ecrire la ligne de texte en question, mais sans grand succes...

Je vais probablement me resoudre a ecrire une petite appli win32 en mode GUI pour arriver a mes fins.

Merci qd meme...
je vais continuer a chercher un workaround, tant qu'il me restera des cheveux :)

Bids



-------------------------------
Réponse au message :
-------------------------------

>
> Neodante
>
> J'ai eu un problème similaire, par conséquent maintenant j'efface l'écran ou je remet le curseur en haut (cf une de mes sources (et la plus merdique -> gestion d'employés avec console + APIs ... ou un truc dans ce genre sur le site))
> @+
>
lundi 18 août 2003 à 12:41:14 | Re : setConsoleTextAttribute : bug ?

neodante

Administrateur CodeS-SourceS

Neodante

Bonne chance !!!!
@+
lundi 18 août 2003 à 22:04:01 | Re : setConsoleTextAttribute : bug ?

Bids

Rectification, apres verification ma bidouille fonctionne ! :

au lieu de faire :

setConsoleTextAttribute(...)
printf("texte a afficher\n");

il "suffit" de faire :

printf("\n");
setConsoleTextAttribute(...)
printf("texte a afficher");

et ca fonctionne dans tous les cas. Le premier "\n" fait scroller l'ecran d'une ligne si besoin, du coup le setConsoleTextAttribute qui s'ensuit agit sur la ligne nouvellement creee, et le printf final en beneficie...

C'est carrement tire par les cheveux, mais au moins ca marche, j'ai fini de galerer :)

a+
Bids



-------------------------------
Réponse au message :
-------------------------------

>
> Neodante
>
> Bonne chance !!!!
> @+
lundi 18 août 2003 à 22:14:07 | Re : setConsoleTextAttribute : bug ?

neodante

Administrateur CodeS-SourceS

Neodante

Au moins je mourrais moins bête ce soir !!!
@+ et merci pour la soluce !


Cette discussion est classée dans : texte, couleur, background, foreground, setconsoletextattribute


Répondre à ce message

Sujets en rapport avec ce message

comment afficher texte en couleur sur borland C++ [ par aliasfreeman ] je suis debutant et je voudrais savoir comment on fait pour pouvoir afficher du texte en couleur et changer la couleur du fondMERCI.......... mettre un texte en couleur avec VC++ [ par ludothenovice ] est ce que quelqu'un pourrai me dire coomment on peut faire pour mettre un texte en couleur avec vc++ car j'ai deja regarder les messages du forum qui Couleur texte dos VC++ [ par Gabi ] editbox et couleur [ par Anacr0x ] Salut !J'ai deux ou trois ptite question a posé :a votre avis, est il possible d'avoir plusieur couleur de texte dans une editbox (ce qui m'étonneré) Couleur dans "EDIT" [ par Ifrit235 ] Salut a tous, je suis en train de programmer un éditeur de texte et j'aimerai savoir comment changer la couleur du texte (ou une partie) dans un "edit Un peu de couleur [ par vince1415 ] J'aimerai savoir si c'est possible de mettre un texte en couleur avec l'injecteur ??Quel fichier il faut inserer, et comment faire ??par exemple avec Couleur du texte [ par Vortex99011 ] En fait j'ai créé un une EditBox, mais je voudrais bien changer la couleur du texte. J'ai jusque là utilisé l'API CreateFont(...) pour changer la poli Texte en couleur [ par lebarn ] Comment onfait pour définir la couleur du texte et du background, please Empecher de griser en mode Disable [Win32] [ par zibo3 ] Bonjour,J'utilise l'événement:WM_CTLCOLOREDIT pour définir la couleur de fond de mon champ Edit ainsi que de la couleur du texte. Malheureusement, je Zone de texte [ par dhylde ] Bonjour à tous,J'ai un petit souci avec mon programme en VC++. Je cherche a créer une zone de texte (comme on en trouve dans Power Point, par exemple)


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,510 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales