Dela via


Fönster- och skärmbuffertstorlek

Storleken på en skärmbuffert uttrycks i form av ett koordinatrutnät baserat på teckenceller. Bredden är antalet teckenceller i varje rad och höjden är antalet rader. Associerad med varje skärmbuffert är ett fönster som avgör storleken och platsen för den rektangulära delen av konsolskärmsbufferten som visas i konsolfönstret. En skärmbufferts fönster definieras genom att ange koordinaterna för teckencellen i de övre vänstra och nedre högra cellerna i fönstrets rektangel.

Anmärkning

I den virtuella terminalsekvensvärlden är storleken på fönstret och storleken på skärmbufferten fast till samma värde. Terminalen hanterar alla rullningslister som skulle motsvara en konsol med en skärmbuffertstorlek som är större än dess fönsterstorlek. Innehållet tillhör terminalen och är vanligtvis inte längre en del av det adresserbara området. Mer information finns i vår jämförelse av de klassiska konsolfunktionerna jämfört med virtuella terminalsekvenser.

En skärmbuffert kan vara valfri storlek, endast begränsad av tillgängligt minne. Dimensionerna för en skärmbufferts fönster får inte överskrida motsvarande dimensioner för antingen konsolskärmsbufferten eller det maximala fönstret som får plats på skärmen baserat på den aktuella teckenstorleken (styrs uteslutande av användaren).

Funktionen GetConsoleScreenBufferInfo returnerar följande information om en skärmbuffert och dess fönster:

  • Den aktuella storleken på konsolskärmsbufferten
  • Fönstrets aktuella plats
  • Den maximala storleken på fönstret med tanke på den aktuella skärmbuffertstorleken, den aktuella teckenstorleken och skärmstorleken

Funktionen GetLargestConsoleWindowSize returnerar den maximala storleken för en konsols fönster baserat på aktuella teckensnitts- och skärmstorlekar. Den här storleken skiljer sig från den maximala fönsterstorlek som returneras av GetConsoleScreenBufferInfo eftersom buffertstorleken på konsolskärmen ignoreras.

Om du vill ändra storlek på en skärmbuffert använder du funktionen SetConsoleScreenBufferSize . Den här funktionen misslyckas om någon av dimensionerna av den angivna storleken är mindre än motsvarande dimension i konsolens fönster.

Om du vill ändra storlek eller plats för en skärmbufferts fönster använder du funktionen SetConsoleWindowInfo . Den här funktionen misslyckas om de angivna koordinaterna för fönsterhörnan överskrider gränserna för konsolskärmsbufferten eller skärmen. Om du ändrar fönsterstorleken för den aktiva skärmbufferten ändras storleken på konsolfönstret som visas på skärmen.

En process kan ändra indataläget för konsolen så att fönsterindata aktiveras så att processen kan ta emot indata när användaren ändrar buffertstorleken på konsolens skärm. Om ett program aktiverar fönsterindata kan det använda GetConsoleScreenBufferInfo för att hämta fönster- och skärmbuffertstorlek vid start. Den här informationen kan sedan användas för att fastställa hur data visas i fönstret. Om användaren ändrar buffertstorleken för konsolskärmen kan programmet svara genom att ändra hur data visas. Ett program kan till exempel justera hur texten radbryts i slutet av raden om antalet tecken per rad ändras. Om ett program inte aktiverar fönsterindata måste det antingen använda de ärvda fönster- och skärmbuffertstorlekarna eller ställa in dem på önskad storlek under start och återställa de ärvda storlekarna vid avslut. Mer information om indataläge för fönster finns iLow-Level Konsollägen.