Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zachowanie funkcji konsoli wysokiego poziomu ma wpływ na tryby wejściowe i wyjściowe konsoli. Wszystkie następujące tryby wprowadzania konsoli są włączone dla buforu wejściowego konsoli podczas tworzenia konsoli:
- Tryb wprowadzania linii
- Przetworzony tryb wprowadzania
- Tryb wprowadzania echa
Oba następujące tryby danych wyjściowych konsoli są włączone dla buforu ekranu konsoli podczas jego tworzenia:
- Przetworzony tryb danych wyjściowych
- Zawijanie w trybie wyjściowym EOL
Wszystkie trzy tryby wejściowe, wraz z przetworzonym trybem wyjściowym, są przeznaczone do współpracy. Najlepiej włączyć lub wyłączyć wszystkie te tryby jako grupę. Po włączeniu wszystkich aplikacji mówi się, że jest w trybie "gotowane", co oznacza, że większość przetwarzania jest obsługiwana dla aplikacji. Gdy wszystkie są wyłączone, aplikacja jest w trybie "nieprzetworzonym", co oznacza, że dane wejściowe są niefiltrowane, a wszystkie operacje przetwarzania pozostają w aplikacji.
Aplikacja może użyć funkcji GetConsoleMode , aby określić bieżący tryb buforu wejściowego lub buforu ekranu konsoli. Można włączyć lub wyłączyć dowolny z tych trybów, używając następujących wartości w funkcji SetConsoleMode . Należy pamiętać, że ustawienie trybu wyjściowego jednego buforu ekranu nie wpływa na tryb wyjściowy innych ekranu.
Jeśli parametr hConsoleHandle jest uchwytem wejściowym, tryb może być co najmniej jedną z następujących wartości. Po utworzeniu konsoli wszystkie tryby wejściowe z wyjątkiem ENABLE_WINDOW_INPUT i ENABLE_VIRTUAL_TERMINAL_INPUT są domyślnie włączone.
| Wartość | Znaczenie |
|---|---|
| ENABLE_ECHO_INPUT 0x0004 | Znaki odczytywane przez funkcję ReadFile lub ReadConsole są zapisywane w aktywnym buforze ekranu podczas wpisywania ich w konsoli. Ten tryb może być używany tylko wtedy, gdy jest również włączony tryb ENABLE_LINE_INPUT . |
| ENABLE_INSERT_MODE 0x0020 | Po włączeniu tekstu wprowadzonego w oknie konsoli zostanie wstawiony w bieżącej lokalizacji kursora, a cały tekst po tej lokalizacji nie zostanie zastąpiony. Po wyłączeniu zostanie zastąpiony cały następujący tekst. |
| ENABLE_LINE_INPUT 0x0002 | Funkcja ReadFile lub ReadConsole zwraca tylko wtedy, gdy odczytany jest znak powrotu karetki. Jeśli ten tryb jest wyłączony, funkcje zwracają co najmniej jeden znak. |
| ENABLE_MOUSE_INPUT 0x0010 | Jeśli wskaźnik myszy znajduje się w granicach okna konsoli, a okno ma fokus klawiatury, zdarzenia myszy generowane przez ruch myszy i naciśnięcia przycisków są umieszczane w buforze wejściowym. Te zdarzenia są odrzucane przez funkcję ReadFile lub ReadConsole, nawet jeśli ten tryb jest włączony. Funkcja ReadConsoleInput może służyć do odczytywania MOUSE_EVENT rekordów wejściowych z buforu wejściowego. |
| ENABLE_PROCESSED_INPUT 0x0001 | CTRL+C są przetwarzane przez system i nie są umieszczane w buforze wejściowym. Jeśli bufor wejściowy jest odczytywany przez plik ReadFile lub ReadConsole, inne klucze sterowania są przetwarzane przez system i nie są zwracane w buforze ReadFile lub ReadConsole . Jeśli tryb ENABLE_LINE_INPUT jest również włączony, funkcja backspace, powrót karetki i znaki zestawienia wierszy są obsługiwane przez system. |
| ENABLE_QUICK_EDIT_MODE 0x0040 | Ta flaga umożliwia użytkownikowi wybieranie i edytowanie tekstu za pomocą myszy. Aby włączyć ten tryb, użyj polecenia ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS. Aby wyłączyć ten tryb, użyj ENABLE_EXTENDED_FLAGS bez tej flagi. |
| ENABLE_WINDOW_INPUT 0x0008 | Interakcje użytkownika, które zmieniają rozmiar buforu ekranu konsoli, są zgłaszane w buforze wejściowym konsoli. Informacje o tych zdarzeniach mogą być odczytywane z buforu wejściowego przez aplikacje przy użyciu funkcji ReadConsoleInput , ale nie przy użyciu funkcji ReadFile lub ReadConsole. |
| ENABLE_VIRTUAL_TERMINAL_INPUT 0x0200 | Ustawienie tej flagi powoduje, że aparat przetwarzania terminali wirtualnych konwertuje dane wejściowe użytkownika odebrane przez okno konsoli na sekwencje terminali wirtualnych , które można pobrać przez aplikację pomocniczą za pomocą funkcji ReadFile lub ReadConsole . Typowe użycie tej flagi jest zamierzone w połączeniu z ENABLE_VIRTUAL_TERMINAL_PROCESSING na dojściu wyjściowym w celu nawiązania połączenia z aplikacją, która komunikuje się wyłącznie za pośrednictwem sekwencji terminali wirtualnych. |
Jeśli parametr hConsoleHandle jest uchwytem buforu ekranu, tryb może być co najmniej jedną z następujących wartości. Po utworzeniu buforu ekranu oba tryby wyjściowe są domyślnie włączone.
| Wartość | Znaczenie |
|---|---|
| ENABLE_PROCESSED_OUTPUT 0x0001 | Znaki zapisane przez funkcję WriteFile lub WriteConsole lub powtórzone przez funkcję ReadFile lub ReadConsole są analizowane dla sekwencji kontrolek ASCII, a wykonywana jest prawidłowa akcja. Przetwarzane są znaki backspace, tabulacji, dzwonka, powrotu karetki i wiersza. Należy ją włączyć w przypadku używania sekwencji kontrolek lub ustawiania ENABLE_VIRTUAL_TERMINAL_PROCESSING . |
| ENABLE_WRAP_AT_EOL_OUTPUT 0x0002 | Podczas pisania za pomocą polecenia WriteFile lub WriteConsole lub echo z funkcją ReadFile lub ReadConsole kursor przechodzi na początek następnego wiersza, gdy osiągnie koniec bieżącego wiersza. Powoduje to, że wiersze wyświetlane w oknie konsoli są automatycznie przewijane w górę, gdy kursor przechodzi poza ostatni wiersz w oknie. Powoduje to również przewinięcie zawartości buforu ekranu konsoli (.). /odrzucenie górnego wiersza buforu ekranu konsoli), gdy kursor przechodzi poza ostatni wiersz w buforze ekranu konsoli. Jeśli ten tryb jest wyłączony, ostatni znak w wierszu zostanie zastąpiony wszelkimi kolejnymi znakami. |
| ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 | Podczas pisania przy użyciu funkcji WriteFile lub WriteConsole znaki są analizowane dla wersji VT100 i podobnych sekwencji znaków sterujących ruchem kursora, trybem koloru/czcionki i innymi operacjami, które mogą być również wykonywane za pośrednictwem istniejących interfejsów API konsoli. Aby uzyskać więcej informacji, zobacz Konsola virtual terminal sequences (Sekwencje terminali wirtualnych konsoli). Upewnij się , że ENABLE_PROCESSED_OUTPUT jest ustawiona podczas korzystania z tej flagi. |
| DISABLE_NEWLINE_AUTO_RETURN 0x0008 | Podczas pisania za pomocą polecenia WriteFile lub WriteConsole dodaje dodatkowy stan opakowujący koniec wiersza, który może opóźnić operacje przewijania kursora i buforu. Zwykle, gdy ENABLE_WRAP_AT_EOL_OUTPUT jest ustawiona, a tekst osiągnie koniec wiersza, kursor natychmiast przejdzie do następnego wiersza, a zawartość buforu będzie przewijać w górę po jednym wierszu. W przeciwieństwie do tego zestawu flag kursor nie przechodzi do następnego wiersza, a operacja przewijania nie jest wykonywana. Zapisany znak zostanie wydrukowany w końcowej pozycji w wierszu, a kursor pozostanie nad tym znakiem tak, jakby ENABLE_WRAP_AT_EOL_OUTPUT był wyłączony, ale następny znak drukowalny będzie drukowany tak, jakby ENABLE_WRAP_AT_EOL_OUTPUT jest włączony. Nie zostanie zastąpione. W szczególności kursor szybko przechodzi w dół do następującego wiersza, przewijanie jest wykonywane w razie potrzeby, znak jest drukowany, a kursor przechodzi jeszcze jedną pozycję. Typowe użycie tej flagi jest zamierzone w połączeniu z ustawieniem ENABLE_VIRTUAL_TERMINAL_PROCESSING w celu lepszego emulowania emulatora terminalu, gdzie pisanie końcowego znaku na ekranie (.. /w prawym dolnym rogu) bez wyzwalania natychmiastowego przewijania jest pożądane zachowanie. |
| ENABLE_LVB_GRID_WORLDWIDE 0x0010 | Interfejsy API do pisania atrybutów znaków, w tym WriteConsoleOutput i WriteConsoleOutputAttribute , umożliwiają używanie flag z atrybutów znaków w celu dostosowania koloru pierwszego planu i tła tekstu. Ponadto określono zakres flag DBCS z prefiksem COMMON_LVB. W przeszłości flagi te działały tylko na stronach kodowych DBCS dla języków chińskich, japońskich i koreańskich. Z wyjątkiem flag bajtów wiodących i końcowych bajtów pozostałe flagi opisujące rysunek linii i odwrotne wideo (.. /swap pierwszego planu i kolorów tła) może być przydatny dla innych języków, aby podkreślić fragmenty danych wyjściowych. Ustawienie tej flagi trybu konsoli umożliwi używanie tych atrybutów na każdej stronie kodu w każdym języku. Domyślnie można zachować zgodność ze znanymi aplikacjami, które historycznie korzystały z konsoli, ignorując te flagi na maszynach innych niż CJK do przechowywania bitów w tych polach do własnych celów lub przez przypadek. Należy pamiętać, że użycie trybu ENABLE_VIRTUAL_TERMINAL_PROCESSING może spowodować ustawienie siatki LVB i odwróconych flag wideo, gdy ta flaga jest nadal wyłączona, jeśli dołączona aplikacja żąda podkreślenia lub odwrotnego wideo za pośrednictwem sekwencji terminali wirtualnych konsoli. |