Partager via


Fonctions de sortie de console de bas niveau

Important

Ce document décrit les fonctionnalités de la plateforme de la console qui ne font plus partie de la feuille de route de notre écosystème. Nous vous déconseillons d’utiliser ce contenu dans de nouveaux produits, mais nous continuerons à prendre en charge des utilisations existantes pour l’avenir indéterminé. Notre solution moderne préférée se concentre sur les séquences de terminaux virtuels pour une compatibilité maximale dans les scénarios multiplateformes. Vous trouverez plus d’informations sur cette décision de conception dans notre document sur les consoles classiques et les terminaux virtuels.

Les fonctions de sortie de console de bas niveau fournissent un accès direct aux cellules de caractères d’une mémoire tampon d’écran. Un ensemble de fonctions permet de lire ou d’écrire dans des cellules consécutives commençant à n'importe quel emplacement dans la mémoire tampon de l'écran de la console. Un autre ensemble de fonctions permet de lire ou d’écrire dans des blocs rectangulaires de cellules.

Les fonctions suivantes permettent de lire ou d’écrire dans un nombre spécifié de cellules de caractères consécutives dans une mémoire tampon d’écran, en commençant par une cellule spécifiée.

Fonction Description
ReadConsoleOutputCharacter Copie une chaîne de caractères Unicode ou ANSI à partir d’une mémoire tampon d’écran.
WriteConsoleOutputCharacter Écrit une chaîne de caractères Unicode ou ANSI dans une mémoire tampon d’écran.
ReadConsoleOutputAttribute Copie une chaîne d'attributs de texte et de couleur d'arrière-plan à partir d'une mémoire tampon de l'écran.
WriteConsoleOutputAttribute Écrit une chaîne d'attributs de texte et de couleur d'arrière-plan dans une mémoire tampon de l'écran.
FillConsoleOutputCharacter Écrit un caractère Unicode ou ANSI unique dans un nombre spécifié de cellules consécutives dans une mémoire tampon d’écran.
FillConsoleOutputAttribute Écrit une combinaison d'attributs de texte et de couleur d'arrière-plan dans un nombre spécifié de cellules consécutives d'une mémoire tampon de l'écran.

Pour toutes ces fonctions, lorsque la dernière cellule d'une ligne est atteinte, la lecture ou l'écriture passe à la première cellule de la ligne suivante. Lorsque la fin de la dernière ligne de la mémoire tampon de l'écran de la console est atteinte, les fonctions d'écriture ignorent tous les caractères ou attributs non écrits, et les fonctions de lecture indiquent le nombre de caractères ou d'attributs réellement écrits.

Les fonctions suivantes permettent de lire ou d'écrire dans des blocs rectangulaires de cellules de caractères à un emplacement spécifié dans une mémoire tampon de l'écran.

Fonction Description
ReadConsoleOutput Copie les données de caractères et de couleurs d'un bloc spécifié de cellules de la mémoire tampon de l'écran dans un bloc donné d’une mémoire tampon de destination.
WriteConsoleOutput Écrit des données de caractères et de couleurs dans un bloc spécifié de cellules de la mémoire tampon de l'écran à partir d'un bloc donné de la mémoire tampon source.

Ces fonctions traitent les mémoires tampons d'écran et les mémoires tampons source ou de destination comme des tableaux bidimensionnels de structures CHAR_INFO (contenant des données sur les caractères et les attributs de couleur pour chaque cellule). Les fonctions spécifient la largeur et la hauteur, en cellules de caractères, de la mémoire tampon source ou de destination, et le pointeur vers la mémoire tampon est traité comme un pointeur vers la cellule d'origine (0,0) du tableau bidimensionnel. Les fonctions utilisent une structure SMALL_RECT pour spécifier le rectangle auquel accéder dans la mémoire tampon de l'écran de la console, et les coordonnées de la cellule supérieure gauche dans la mémoire tampon source ou de destination déterminent l'emplacement du rectangle correspondant dans cette mémoire tampon.

Ces fonctions écrêtent automatiquement le rectangle de la mémoire tampon de l'écran spécifié pour le faire tenir dans les limites de la mémoire tampon de l'écran de la console. Par exemple, si le rectangle spécifie des coordonnées inférieures droites (colonne 100, ligne 50) et que la mémoire tampon de l'écran de la console ne fait que 80 colonnes de large, les coordonnées sont écrêtées de manière à ce qu'elles soient (colonne 79, ligne 50). De même, ce rectangle ajusté est à nouveau écrêté pour tenir dans les limites de la mémoire tampon source ou de destination. Les coordonnées de la mémoire tampon d’écran du rectangle réel lu ou écrit sont spécifiées. Pour obtenir un exemple d'utilisation de ces fonctions, consultez la section Lecture et écriture de blocs de caractères et d'attributs.

L'illustration montre une opération ReadConsoleOutput où l'écrêtage se produit lorsque le bloc est lu à partir de la mémoire tampon de l'écran de la console, et à nouveau lorsque le bloc est copié dans la mémoire tampon de destination. La fonction signale le rectangle de la mémoire tampon d’écran réel à partir duquel il a été copié.

screen buffer window with destination buffer