Delen via


Venster- en schermbuffergrootte

De grootte van een schermbuffer wordt uitgedrukt in termen van een coördinaatraster op basis van tekencellen. De breedte is het aantal tekencellen in elke rij en de hoogte is het aantal rijen. Gekoppeld aan elke schermbuffer is een venster dat de grootte en locatie bepaalt van het rechthoekige gedeelte van de consoleschermbuffer die wordt weergegeven in het consolevenster. Het venster van een schermbuffer wordt gedefinieerd door de coördinaten van de tekencel op te geven van de cellen linksboven en rechtsonder van de rechthoek van het venster.

Opmerking

In de virtuele terminalreeksenwereld worden de grootte van het venster en de grootte van de schermbuffer vastgezet op dezelfde waarde. De terminal verwerkt een scrollback-regio die gelijk is aan een console met een schermbuffergrootte die groter is dan de venstergrootte. Deze inhoud behoort tot de terminal en maakt over het algemeen geen deel meer uit van het adresseerbare gebied. Zie onze vergelijking van de klassieke consolefuncties versus virtuele terminalreeksen voor meer informatie.

Een schermbuffer kan elke grootte hebben, alleen beperkt door het beschikbare geheugen. De afmetingen van het venster van een schermbuffer mogen niet groter zijn dan de bijbehorende dimensies van de consoleschermbuffer of het maximale venster dat op het scherm past op basis van de huidige tekengrootte (uitsluitend beheerd door de gebruiker).

De functie GetConsoleScreenBufferInfo retourneert de volgende informatie over een schermbuffer en het bijbehorende venster:

  • De huidige grootte van de consoleschermbuffer
  • De huidige locatie van het venster
  • De maximale grootte van het venster op basis van de huidige schermbuffergrootte, de huidige tekengrootte en de schermgrootte

De functie GetLargestConsoleWindowSize retourneert de maximale grootte van het venster van een console op basis van het huidige lettertype en de schermgrootten. Deze grootte verschilt van de maximale venstergrootte die wordt geretourneerd door GetConsoleScreenBufferInfo , omdat de buffergrootte van het consolescherm wordt genegeerd.

Als u de grootte van een schermbuffer wilt wijzigen, gebruikt u de functie SetConsoleScreenBufferSize . Deze functie mislukt als een van beide dimensies van de opgegeven grootte kleiner is dan de bijbehorende dimensie van het venster van de console.

Als u de grootte of locatie van het venster van een schermbuffer wilt wijzigen, gebruikt u de functie SetConsoleWindowInfo . Deze functie mislukt als de opgegeven coördinaten in de vensterhoek de limieten van de consoleschermbuffer of het scherm overschrijden. Als u de venstergrootte van de actieve schermbuffer wijzigt, wordt de grootte van het consolevenster op het scherm gewijzigd.

Een proces kan de invoermodus van de console wijzigen om vensterinvoer in te schakelen, zodat het proces invoer kan ontvangen wanneer de gebruiker de grootte van de consoleschermbuffer wijzigt. Als een toepassing vensterinvoer inschakelt, kan deze GetConsoleScreenBufferInfo gebruiken om venster- en schermbuffergrootte op te halen bij het opstarten. Deze informatie kan vervolgens worden gebruikt om te bepalen hoe gegevens in het venster worden weergegeven. Als de gebruiker de buffergrootte van het consolescherm wijzigt, kan de toepassing reageren door de manier te wijzigen waarop gegevens worden weergegeven. Een toepassing kan bijvoorbeeld de manier aanpassen waarop tekst aan het einde van de regel terugloopt als het aantal tekens per rij verandert. Als een toepassing geen vensterinvoer inschakelt, moet deze de overgenomen venster- en schermbuffergrootten gebruiken of deze instellen op de gewenste grootte tijdens het opstarten en de overgenomen grootten bij het afsluiten herstellen. Zie Low-Level Consolemodi voor meer informatie over de vensterinvoermodus.