Sdílet prostřednictvím


Posouvání vyrovnávací paměti obrazovky

Důležité

Tento dokument popisuje funkce konzolové platformy, které už nejsou součástí našeho plánu ekosystému. Tento obsah nedoporučujeme používat v nových produktech, ale v budoucnu budeme nadále podporovat stávající využití. Naše upřednostňované moderní řešení se zaměřuje na sekvence virtuálních terminálů pro zajištění maximální kompatibility ve scénářích napříč platformami. Další informace o tomto rozhodnutí o návrhu najdete v naší klasické konzole vs. dokumentu virtuálního terminálu .

V okně konzoly se zobrazí část aktivní vyrovnávací paměti obrazovky. Každá vyrovnávací paměť obrazovky udržuje svůj vlastní aktuální obdélník okna, který určuje souřadnice buněk levého horního a pravého dolního znaménka, které se mají zobrazit v okně konzoly. Chcete-li určit aktuální obdélník okna vyrovnávací paměti obrazovky, použijte GetConsoleScreenBufferInfo. Při vytvoření vyrovnávací paměti obrazovky je v levém horním rohu okna v levém horním rohu vyrovnávací paměti konzoly (0,0).

Obdélník okna se může změnit tak, aby zobrazoval různé části vyrovnávací paměti obrazovky konzoly. Obdélník okna vyrovnávací paměti obrazovky se může změnit v následujících situacích:

  • Když Je volána SetConsoleWindowInfo pro zadání nového obdélníku okna, posune zobrazení vyrovnávací paměti obrazovky konzoly změnou umístění obdélníku okna beze změny velikosti okna. Příklady posouvání obsahu okna najdete v tématu Posouvání okna vyrovnávací paměti obrazovky.

    okno vyrovnávací paměti obrazovky se posunuje kolem velké vyrovnávací paměti obsahu

  • Při použití funkce WriteFile k zápisu do vyrovnávací paměti obrazovky s povoleným výstupním režimem konce řádku (EOL) se obdélník okna automaticky posune, takže kurzor se vždy zobrazí.

  • Když funkce SetConsoleCursorPosition určuje novou pozici kurzoru, která je mimo hranice aktuálního obdélníku okna, obdélník okna se automaticky posune, aby se zobrazil kurzor.

  • Když uživatel změní velikost okna konzoly nebo použije posuvníky okna, může se změnit obdélník okna aktivní vyrovnávací paměti obrazovky. Tato změna není hlášena jako událost změny velikosti okna ve vstupní vyrovnávací paměti.

V každé z těchto situací se obdélník okna posune tak, aby zobrazil jinou část vyrovnávací paměti obrazovky konzoly, ale obsah vyrovnávací paměti obrazovky konzoly zůstane ve stejné pozici. Následující situace můžou způsobit posun obsahu vyrovnávací paměti obrazovky konzoly:

  • Když je volána funkce ScrollConsoleScreenBuffer , obdélníkový blok se zkopíruje z jedné části vyrovnávací paměti obrazovky do jiné.
  • Pokud k zápisu do vyrovnávací paměti obrazovky s povoleným zalamovacím režimem výstupu EOL použijete WriteFile , obsah vyrovnávací paměti konzoly se při výskytu vyrovnávací paměti konzoly automaticky posune. Toto posouvání zahodí horní řádek vyrovnávací paměti obrazovky konzoly.

ScrollConsoleScreenBuffer určuje obdélník vyrovnávací paměti konzoly, který se přesune, a nové levé horní souřadnice, do kterých se obdélník zkopíruje. Tato funkce může posouvat část nebo celý obsah vyrovnávací paměti obrazovky konzoly.

Obrázek znázorňuje operaci ScrollConsoleScreenBuffer , která posune celý obsah vyrovnávací paměti obrazovky konzoly o několik řádků. Obsah horních řádků se zahodí a dolní řádky se vyplní zadaným znakem a barvou.

okno vyrovnávací paměti obrazovky, které posunuje obsah mimo horní část, aby se zahodil

Efekty ScrollConsoleScreenBuffer je možné omezit zadáním volitelného obdélníku výřezu tak, aby se obsah vyrovnávací paměti obrazovky konzoly mimo obdélník výřezu nezměnil. Efektem výřezu je vytvořit dílčíwindow (obdélník výřezu), jehož obsah se posune, aniž by to ovlivnilo zbytek vyrovnávací paměti obrazovky konzoly. Příklad, který používá ScrollConsoleScreenBuffer, viz Posouvání obsahu vyrovnávací paměti obrazovky.