Bids
Messages postés3Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention18 août 2003
-
15 août 2003 à 21:42
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 2006
-
18 août 2003 à 22:14
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)
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 ?
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 16 août 2003 à 14:32
8-) Neodante 8-)
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))
@+
Bids
Messages postés3Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention18 août 2003 17 août 2003 à 21:11
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
Messages postés3Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention18 août 2003 18 août 2003 à 22:04
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
Vous n’avez pas trouvé la réponse que vous recherchez ?