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 !