Sdílet prostřednictvím


režimy konzoly High-Level

Chování funkcí konzoly vysoké úrovně má vliv na režimy vstupu a výstupu konzoly. Při vytváření konzoly jsou pro vstupní vyrovnávací paměť konzoly povoleny všechny následující režimy vstupu konzoly:

  • Režim vstupu řádku
  • Zpracovaný režim vstupu
  • Režim vstupu ozvěny

Oba následující režimy výstupu konzoly jsou při vytváření povoleny pro vyrovnávací paměť obrazovky konzoly:

  • Zpracovaný výstupní režim
  • Zabalení ve výstupním režimu EOL

Všechny tři režimy vstupu spolu s zpracovaným výstupním režimem jsou navržené tak, aby spolupracovaly. Nejlepší je povolit nebo zakázat všechny tyto režimy jako skupinu. Když jsou všechny povoleny, aplikace je označena jako "uvařená", což znamená, že většina zpracování je zpracována pro aplikaci. Když jsou všechny zakázány, aplikace je v "nezpracované" režimu, což znamená, že vstup je nefiltrovaný a veškeré zpracování zůstane v aplikaci.

Aplikace může použít funkci GetConsoleMode k určení aktuálního režimu vstupní vyrovnávací paměti konzoly nebo vyrovnávací paměti obrazovky. Některé z těchto režimů můžete povolit nebo zakázat pomocí následujících hodnot ve funkci SetConsoleMode . Všimněte si, že nastavení výstupního režimu jedné vyrovnávací paměti obrazovky nemá vliv na výstupní režim jiných vyrovnávacích pamětí obrazovky.

Pokud je parametr hConsoleHandle vstupním popisovačem, může být režim jednou nebo více z následujících hodnot. Při vytváření konzoly jsou ve výchozím nastavení povoleny všechny režimy vstupu s výjimkou ENABLE_WINDOW_INPUT a ENABLE_VIRTUAL_TERMINAL_INPUT .

Hodnota Význam
ENABLE_ECHO_INPUT 0x0004 Znaky přečtené funkcí ReadFile nebo ReadConsole se zapisují do aktivní vyrovnávací paměti obrazovky při psaní do konzoly. Tento režim lze použít pouze v případě, že je povolený i režim ENABLE_LINE_INPUT .
ENABLE_INSERT_MODE 0x0020 Pokud je tato možnost povolená, text zadaný v okně konzoly se vloží do aktuálního umístění kurzoru a veškerý text za tímto umístěním se nepřepíše. Pokud je zakázáno, přepíšou se všechny následující texty.
ENABLE_LINE_INPUT 0x0002 Funkce ReadFile nebo ReadConsole vrátí pouze v případech, kdy je přečtený znak návratu na začátek řádku. Pokud je tento režim zakázaný, funkce se vrátí, když je k dispozici jeden nebo více znaků.
ENABLE_MOUSE_INPUT 0x0010 Pokud je ukazatel myši v rámci ohraničení okna konzoly a okno má fokus klávesnice, události myši generované pohybem myši a stisknutí tlačítek se umístí do vstupní vyrovnávací paměti. Tyto události jsou zahozeny readFile nebo ReadConsole, i když je tento režim povolen. Funkci ReadConsoleInput lze použít ke čtení MOUSE_EVENT vstupních záznamů ze vstupní vyrovnávací paměti.
ENABLE_PROCESSED_INPUT 0x0001 Systém zpracovává kombinaci kláves CTRL+C a není umístěn do vstupní vyrovnávací paměti. Pokud vstupní vyrovnávací paměť čte readfile nebo ReadConsole, ostatní řídicí klíče se zpracovávají systémem a nevrátí se do vyrovnávací paměti ReadFile nebo ReadConsole . Pokud je zapnutý také režim ENABLE_LINE_INPUT , systém zpracovává znaky backspace, návratu na začátek řádku a odřádkování.
ENABLE_QUICK_EDIT_MODE 0x0040 Tento příznak umožňuje uživateli vybrat a upravit text pomocí myši. Chcete-li povolit tento režim, použijte ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS. Pokud chcete tento režim zakázat, použijte ENABLE_EXTENDED_FLAGS bez tohoto příznaku.
ENABLE_WINDOW_INPUT 0x0008 Uživatelské interakce, které mění velikost vyrovnávací paměti obrazovky konzoly, jsou hlášeny ve vstupní vyrovnávací paměti konzoly. Informace o těchto událostech lze číst ze vstupní vyrovnávací paměti aplikacemi pomocí funkce ReadConsoleInput , ale ne pomocí ReadFile nebo ReadConsole.
ENABLE_VIRTUAL_TERMINAL_INPUT 0x0200 Nastavením tohoto příznaku směruje modul pro zpracování virtuálního terminálu k převodu uživatelského vstupu přijatého v okně konzoly na sekvence virtuálních terminálů konzoly , které lze načíst podpůrnou aplikací prostřednictvím funkcí ReadFile nebo ReadConsole .

Typické použití tohoto příznaku je určeno ve spojení s ENABLE_VIRTUAL_TERMINAL_PROCESSING na výstupním popisovači pro připojení k aplikaci, která komunikuje výhradně přes sekvence virtuálních terminálů.

Pokud je parametr hConsoleHandle popisovačem vyrovnávací paměti obrazovky, může být režim jednou nebo více z následujících hodnot. Při vytvoření vyrovnávací paměti obrazovky jsou ve výchozím nastavení povoleny oba režimy výstupu.

Hodnota Význam
ENABLE_PROCESSED_OUTPUT 0x0001 Znaky napsané funkcí WriteFile nebo WriteConsole nebo ozvěny funkcí ReadFile nebo ReadConsole jsou analyzovány pro sekvence ovládacích prvků ASCII a provede se správná akce. Zpracují se znaky backspace, tab, zvonku, návratu na začátek řádku a odřádkování. Měla by být povolena při použití řídicích sekvencí nebo při nastavení ENABLE_VIRTUAL_TERMINAL_PROCESSING .
ENABLE_WRAP_AT_EOL_OUTPUT 0x0002 Při zápisu pomocí WriteFile nebo WriteConsole nebo echoing pomocí ReadFile nebo ReadConsole se kurzor přesune na začátek dalšího řádku, když dosáhne konce aktuálního řádku. To způsobí, že se řádky zobrazené v okně konzoly automaticky posunou nahoru, když kurzor přejde za poslední řádek v okně. Také způsobí, že se obsah vyrovnávací paměti obrazovky konzoly posune nahoru (.. /zahození horního řádku vyrovnávací paměti obrazovky konzoly), když kurzor přejde nad poslední řádek v vyrovnávací paměti obrazovky konzoly. Pokud je tento režim zakázaný, poslední znak v řádku se přepíše všemi dalšími znaky.
ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 Při zápisu pomocí WriteFile nebo WriteConsole se znaky analyzují pro VT100 a podobné sekvence řídicích znaků, které řídí pohyb kurzoru, režim barev a písem a další operace, které je možné provádět také prostřednictvím existujících rozhraní API konzoly. Další informace naleznete v tématu Konzolové virtuální terminálové sekvence.
Při použití tohoto příznaku se ujistěte , že je nastavená ENABLE_PROCESSED_OUTPUT.
DISABLE_NEWLINE_AUTO_RETURN 0x0008 Při zápisu pomocí WriteFile nebo WriteConsole se tím přidá další stav do konce řádku zabalení, který může zpozdit operace přesunutí kurzoru a posouvání vyrovnávací paměti.

Když je ENABLE_WRAP_AT_EOL_OUTPUT nastavena a text dosáhne konce řádku, kurzor se okamžitě přesune na další řádek a obsah vyrovnávací paměti se posune o jeden řádek nahoru. Na rozdíl od této sady příznaků se kurzor nepřesune na další řádek a operace posouvání se neprovede. Napsaný znak se vytiskne na poslední pozici na řádku a kurzor zůstane nad tímto znakem, jako by ENABLE_WRAP_AT_EOL_OUTPUT byl vypnutý, ale další tisknutelný znak se vytiskne, jako by byl ENABLE_WRAP_AT_EOL_OUTPUT zapnutý. Nedojde k žádnému přepsání. Konkrétně se kurzor rychle posune dolů na následující řádek, v případě potřeby se provede posouvání, vytiskne se znak a kurzor přejde o jednu další pozici.

Typické použití tohoto příznaku je určeno ve spojení s nastavením ENABLE_VIRTUAL_TERMINAL_PROCESSING k lepší emulaci emulátoru terminálu, kde zapisuje konečný znak na obrazovce (.. /v pravém dolním rohu) bez aktivace okamžitého posouvání je požadované chování.
ENABLE_LVB_GRID_WORLDWIDE 0x0010 Rozhraní API pro psaní atributů znaků, včetně WriteConsoleOutput a WriteConsoleOutputAttribute , umožňují použití příznaků z atributů znaků upravit barvu popředí a pozadí textu. Kromě toho byl zadán rozsah příznaků služby DBCS s předponou COMMON_LVB. V minulosti tyto příznaky fungovaly jenom na znakových stránkách DBCS pro čínské, japonské a korejské jazyky.

S výjimkou úvodních bajtů a koncových bajtů příznaky zbývající příznaky popisující kreslení čar a obrácené video (.. /swap foreground a background colors) může být užitečné pro ostatní jazyky, aby zdůraznily části výstupu.

Nastavení tohoto příznaku režimu konzoly umožní použití těchto atributů na každé znakové stránce v každém jazyce.

Ve výchozím nastavení je vypnuto udržovat kompatibilitu se známými aplikacemi, které historicky využily výhod konzoly a ignorovaly tyto příznaky na počítačích, které nejsou CJK, aby ukládaly bity do těchto polí pro své vlastní účely nebo omylem.

Všimněte si, že použití režimu ENABLE_VIRTUAL_TERMINAL_PROCESSING může vést k nastavení mřížky LVB a reverzních příznaků videa, zatímco tento příznak je stále vypnutý, pokud připojené aplikace podtržení nebo inverzní video prostřednictvím sekvence virtuálních terminálů konzoly.