Partager via


Défilement de la mémoire tampon d’écran

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.

La fenêtre de console affiche une partie de la mémoire tampon d’écran active. Chaque mémoire tampon d’écran conserve son propre rectangle de fenêtre actuel qui spécifie les coordonnées des cellules du caractère supérieur gauche et inférieur droit à afficher dans la fenêtre de console. Pour déterminer le rectangle de fenêtre actuel d'une mémoire tampon de l'écran, utilisez la fonction GetConsoleScreenBufferInfo. Lorsqu’une mémoire tampon d’écran est créée, le coin supérieur gauche de sa fenêtre se trouve en haut à gauche de la mémoire tampon de l’écran de la console à (0,0).

Le rectangle de fenêtre peut changer pour afficher différentes parties de la mémoire tampon de l’écran de la console. Le rectangle de fenêtre d’une mémoire tampon d’écran peut changer dans les situations suivantes :

  • Lorsque la fonction SetConsoleWindowInfo est appelé pour spécifier un nouveau rectangle de fenêtre, elle fait défiler la vue de la mémoire tampon de l’écran de la console en modifiant la position du rectangle de fenêtre sans modifier la taille de la fenêtre. Pour obtenir des exemples de défilement du contenu de la fenêtre, consultez la section Défilement d’une fenêtre de mémoire tampon d’écran.

    screen buffer window panning around large buffer of content

  • Lors de l'utilisation de la fonction WriteFile pour écrire dans une mémoire tampon de l'écran avec le mode de sortie retour à la ligne en fin de ligne (EOL) activé, le rectangle de la fenêtre se déplace automatiquement, de sorte que le curseur est toujours affiché.

  • Lorsque la fonction SetConsoleCursorPosition spécifie une nouvelle position du curseur qui se trouve en dehors des délimitations du rectangle de la fenêtre actuelle, le rectangle de la fenêtre se déplace automatiquement pour afficher le curseur.

  • Lorsque l'utilisateur modifie la taille de la fenêtre de console ou utilise les barres de défilement de la fenêtre, le rectangle de la fenêtre de la mémoire tampon de l'écran active peut changer. Cette modification n’est pas signalée en tant qu’événement de redimensionnement de fenêtre dans la mémoire tampon d’entrée.

Dans chacune de ces situations, le rectangle de la fenêtre se déplace pour afficher une partie différente de la mémoire tampon de l’écran de la console, mais le contenu de la mémoire tampon de l’écran de la console reste à la même position. Les situations suivantes peuvent entraîner un déplacement du contenu de la mémoire tampon de l'écran de la console :

  • Lorsque la fonction ScrollConsoleScreenBuffer est appelée, un bloc rectangulaire est copié d’une partie d’une mémoire tampon d’écran à une autre.
  • Lors de l'utilisation de la fonction WriteFile pour écrire dans une mémoire tampon de l'écran avec le mode de sortie retour à la ligne en fin de ligne activé, le contenu de la mémoire tampon de l'écran de la console défile automatiquement lorsque la fin de la mémoire tampon de l'écran de la console est atteinte. Ce défilement ne tient pas compte de la première ligne de la mémoire tampon de l'écran de la console.

La fonction ScrollConsoleScreenBuffer spécifie le rectangle de la mémoire tampon de l'écran de la console qui est déplacé et les nouvelles coordonnées du coin supérieur gauche vers lesquelles le rectangle est copié. Cette fonction peut faire défiler une partie ou l’intégralité du contenu de la mémoire tampon de l’écran de la console.

L’illustration montre une opération de la fonction opération ScrollConsoleScreenBuffer qui fait défiler l’intégralité du contenu de la mémoire tampon de l’écran de la console vers le haut par plusieurs lignes. Le contenu des lignes supérieures est ignoré et les lignes inférieures sont remplies d'un caractère et d'une couleur spécifiés.

screen buffer window scrolling content off top to discard

Les effets de la fcontion ScrollConsoleScreenBuffer peuvent être limités en spécifiant un rectangle d'écrêtage facultatif, de sorte que le contenu de la mémoire tampon de l'écran de la console en dehors du rectangle d'écrêtage reste inchangé. L'écrêtage a pour effet de créer une sous-fenêtre (le rectangle d'écrêtage) dont le contenu défile sans affecter le reste de la mémoire tampon de l'écran de la console. Pour obtenir un exemple d'utilisation de la fonction ScrollConsoleScreenBuffer, consultez la section Défilement du contenu d'une mémoire tampon de l'écran.