Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Une mémoire tampon d’écran est un tableau à deux dimensions de données de caractères et de couleurs pour la sortie dans une fenêtre de console. Une console peut avoir plusieurs mémoires tampons d’écran. La mémoire tampon d’écran active est celle qui s’affiche sur l’écran.
Le système crée une mémoire tampon d’écran chaque fois qu’il crée une nouvelle console. Pour ouvrir un handle dans la mémoire tampon d’écran active d’une console, spécifiez la valeur CONOUT$ dans un appel à la fonction CreateFile . Un processus peut utiliser la fonction CreateConsoleScreenBuffer pour créer des mémoires tampons d’écran supplémentaires pour sa console. Une nouvelle mémoire tampon d’écran n’est pas active tant que son handle n’est pas spécifié dans un appel à la fonction SetConsoleActiveScreenBuffer . Toutefois, les mémoires tampons d’écran sont accessibles pour la lecture et l’écriture, qu’elles soient actives ou inactives.
Chaque mémoire tampon d’écran possède son propre tableau bidimensionnel d’enregistrements d’informations de caractères. Les données de chaque caractère sont stockées dans une structure CHAR_INFO qui spécifie le caractère Unicode ou ANSI et les couleurs de premier plan et d’arrière-plan dans lesquelles ce caractère est affiché.
Plusieurs propriétés associées à une mémoire tampon d’écran peuvent être définies indépendamment pour chaque mémoire tampon d’écran. Cela signifie que la modification de la mémoire tampon d’écran active peut avoir un effet spectaculaire sur l’apparence de la fenêtre de console. Les propriétés associées à une mémoire tampon d’écran sont les suivantes :
- Taille de la mémoire tampon d’écran, dans les lignes de caractères et les colonnes.
- Attributs de texte (couleurs de premier plan et d’arrière-plan pour l’affichage du texte à écrire par la fonction WriteFile ou WriteConsole ).
- Taille et emplacement de la fenêtre (zone rectangulaire de la mémoire tampon d’écran de la console affichée dans la fenêtre de console).
- Position, apparence et visibilité du curseur.
- Modes de sortie (ENABLE_PROCESSED_OUTPUT et ENABLE_WRAP_AT_EOL_OUTPUT). Pour plus d’informations sur les modes de sortie de console, consultez High-Level Modes console.
Lorsqu’une mémoire tampon d’écran est créée, elle contient des espaces dans chaque position. Son curseur est visible et positionné à l’origine de la mémoire tampon (0,0), et la fenêtre est positionnée avec son angle supérieur gauche à l’origine de la mémoire tampon. La taille de la mémoire tampon d’écran de la console, la taille de la fenêtre, les attributs de texte et l’apparence du curseur sont déterminées par l’utilisateur ou par le système par défaut. Pour récupérer les valeurs actuelles des différentes propriétés associées à la mémoire tampon d’écran de la console, utilisez les fonctions GetConsoleScreenBufferInfo, GetConsoleCursorInfo et GetConsoleMode .
Les applications qui modifient les propriétés de la mémoire tampon de l’écran de la console doivent créer leur propre mémoire tampon d’écran ou enregistrer l’état de la mémoire tampon d’écran héritée au démarrage et la restaurer à la sortie. Ce comportement coopératif est nécessaire pour s’assurer que d’autres applications partageant la même session de console ne sont pas affectées par les modifications.
Conseil / Astuce
Il est recommandé d’utiliser le mode de mémoire tampon de remplacement à l’avenir, si possible, au lieu de créer une deuxième mémoire tampon d’écran à cet effet. Le mode de mémoire tampon alternative offre une compatibilité accrue entre les appareils distants et avec d’autres plateformes. Pour plus d’informations, consultez notre discussion sur les API de console classiques et sur le terminal virtuel .
Apparence et position du curseur
Le curseur d’une mémoire tampon d’écran peut être visible ou masqué. Lorsqu’il est visible, son apparence peut varier, allant du remplissage complet d’une cellule de caractère à l’apparence horizontale au bas de la cellule. Pour récupérer des informations sur l’apparence et la visibilité du curseur, utilisez la fonction GetConsoleCursorInfo . Cette fonction indique si le curseur est visible et décrit l’apparence du curseur comme pourcentage d’une cellule de caractère qu’il remplit. Pour définir l’apparence et la visibilité du curseur, utilisez la fonction SetConsoleCursorInfo .
Les caractères écrits par les fonctions d’E/S de console de haut niveau sont écrits à l’emplacement actuel du curseur, faisant avancer le curseur vers l’emplacement suivant. Pour déterminer la position actuelle du curseur dans le système de coordonnées d’une mémoire tampon d’écran, utilisez GetConsoleScreenBufferInfo. Vous pouvez utiliser SetConsoleCursorPosition pour définir la position du curseur et, par conséquent, contrôler le positionnement du texte écrit ou repris par les fonctions d’E/S de haut niveau. Si vous déplacez le curseur, le texte situé à l’emplacement du nouveau curseur est remplacé.
Remarque
L’utilisation des fonctions de bas niveau pour rechercher la position du curseur est déconseillée. Il est recommandé d’utiliser des séquences de terminal virtuel pour interroger cette position si nécessaire pour les dispositions avancées. Vous trouverez plus d’informations sur la préférence des séquences de terminal virtuel dans les fonctions classiques et dans le document de terminal virtuel .
La position, l’apparence et la visibilité du curseur sont définies indépendamment pour chaque mémoire tampon d’écran.
Attributs de caractère
Les attributs de caractère peuvent être divisés en deux classes : couleur et DBCS. Les attributs suivants sont définis dans le fichier d’en-tête WinCon.h .
| Caractéristique | Sens |
|---|---|
| FOREGROUND_BLUE | La couleur du texte contient du bleu. |
| FOREGROUND_GREEN | La couleur du texte contient le vert. |
| FOREGROUND_RED | La couleur du texte contient le rouge. |
| FOREGROUND_INTENSITY | La couleur du texte est intensifiée. |
| BACKGROUND_BLUE | La couleur d’arrière-plan contient du bleu. |
| BACKGROUND_GREEN | La couleur d’arrière-plan contient le vert. |
| BACKGROUND_RED | La couleur d’arrière-plan contient le rouge. |
| BACKGROUND_INTENSITY | La couleur d’arrière-plan est renforcée. |
| COMMON_LVB_LEADING_BYTE | Octet de début. |
| COMMON_LVB_TRAILING_BYTE | Octet de fin. |
| COMMON_LVB_GRID_HORIZONTAL | Haut horizontal. |
| COMMON_LVB_GRID_LVERTICAL | Vertical gauche. |
| COMMON_LVB_GRID_RVERTICAL | Vertical droit. |
| COMMON_LVB_REVERSE_VIDEO | Attributs de premier plan et d’arrière-plan inversés. |
| COMMON_LVB_UNDERSCORE | Souligner. |
Les attributs de premier plan spécifient la couleur du texte. Les attributs d’arrière-plan spécifient la couleur utilisée pour remplir l’arrière-plan de la cellule. Les autres attributs sont utilisés avec DBCS.
Une application peut combiner les constantes de premier plan et d’arrière-plan pour obtenir différentes couleurs. Par exemple, la combinaison suivante entraîne un texte cyan lumineux sur un arrière-plan bleu.
FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY | BACKGROUND_BLUE
Si aucune constante d’arrière-plan n’est spécifiée, l’arrière-plan est noir et, si aucune constante de premier plan n’est spécifiée, le texte est noir. Par exemple, la combinaison suivante produit du texte noir sur un arrière-plan blanc. Le rouge, le vert et le bleu sont spécifiés pour l’arrière-plan qui se combine à un arrière-plan blanc. Aucune couleur d’indicateur n’est spécifiée pour le premier plan afin qu’elle soit noire.
BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED
Chaque cellule de mémoire tampon d’écran stocke les attributs de couleur des couleurs utilisées dans le dessin du premier plan (texte) et de l’arrière-plan de cette cellule. Une application peut définir les données de couleur pour chaque cellule de caractère individuellement, en stockant les données dans le membre Attributs de la structure CHAR_INFO pour chaque cellule. Les attributs de texte actuels de chaque mémoire tampon d’écran sont utilisés pour les caractères écrits ou échos par les fonctions de haut niveau.
Une application peut utiliser GetConsoleScreenBufferInfo pour déterminer les attributs de texte actuels d’une mémoire tampon d’écran et la fonction SetConsoleTextAttribute pour définir les attributs de caractère. La modification des attributs d’une mémoire tampon d’écran n’affecte pas l’affichage des caractères précédemment écrits. Ces attributs de texte n’affectent pas les caractères écrits par les fonctions d’E/S de console de bas niveau (telles que la fonction WriteConsoleOutput ou WriteConsoleOutputCharacter ), qui spécifient explicitement les attributs pour chaque cellule écrite ou laissez les attributs inchangés.
Remarque
L’utilisation des fonctions de bas niveau pour manipuler des attributs de texte par défaut et spécifiques est déconseillée. Il est recommandé d’utiliser des séquences de terminal virtuel pour définir des attributs de texte. Vous trouverez plus d’informations sur la préférence des séquences de terminal virtuel dans les fonctions classiques et dans le document de terminal virtuel .
Attributs de police
La fonction GetCurrentConsoleFont récupère des informations sur la police de console actuelle. Les informations stockées dans la structure CONSOLE_FONT_INFO incluent la largeur et la hauteur de chaque caractère dans la police.
La fonction GetConsoleFontSize récupère la taille de la police utilisée par la mémoire tampon d’écran de la console spécifiée.
Remarque
L’utilisation de fonctions pour rechercher et manipuler des informations de police est déconseillée. Il est recommandé d’utiliser des applications en ligne de commande de manière neutre pour garantir la compatibilité interplateforme ainsi que la compatibilité avec les environnements hôtes qui permettent à l’utilisateur de personnaliser la police. Pour plus d’informations, les préférences utilisateur et les environnements hôtes, notamment les terminaux, consultez la feuille de route de l’écosystème.