Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Поведение высокоуровневых функций консоли влияет на режимы ввода и вывода консоли. Все следующие режимы ввода консоли включены для входного буфера консоли при создании консоли:
- Режим ввода строки
- Обработанный режим ввода
- Режим ввода эхо
Оба следующих режима вывода консоли включены для буфера экрана консоли при создании:
- Обработанный выходной режим
- Упаковка в выходной режим EOL
Все три режима ввода, а также обработанный режим вывода предназначены для совместной работы. Рекомендуется включить или отключить все эти режимы в виде группы. Когда все включено, приложение, как сообщается, находится в режиме "приготовленного" режима, что означает, что большая часть обработки обрабатывается для приложения. Если все отключены, приложение находится в режиме "необработанный", что означает, что входные данные не фильтруются и любая обработка остается в приложении.
Приложение может использовать функцию GetConsoleMode для определения текущего режима входного буфера консоли или буфера экрана. Вы можете включить или отключить любой из этих режимов с помощью следующих значений в функции SetConsoleMode . Обратите внимание, что настройка выходного режима одного буфера экрана не влияет на выходной режим других буферов экрана.
Если параметр hConsoleHandle является входным дескриптором, режим может быть одним или несколькими из следующих значений. При создании консоли все режимы ввода, кроме ENABLE_WINDOW_INPUT и ENABLE_VIRTUAL_TERMINAL_INPUT , включены по умолчанию.
| Ценность | Значение |
|---|---|
| ENABLE_ECHO_INPUT 0x0004 0x0004 | Символы, считываемые функцией ReadFile или ReadConsole , записываются в активный буфер экрана по мере их ввода в консоль. Этот режим можно использовать только в том случае, если режим ENABLE_LINE_INPUT также включен. |
| ENABLE_INSERT_MODE 0x0020 | При включении текст, введенный в окне консоли, будет вставлен в текущее расположение курсора, а все тексты, указанные в этом расположении, не будут перезаписаны. При отключении весь следующий текст будет перезаписан. |
| ENABLE_LINE_INPUT 0x0002 | Функция ReadFile или ReadConsole возвращается только при чтении символа возврата каретки. Если этот режим отключен, функции возвращаются при наличии одного или нескольких символов. |
| ENABLE_MOUSE_INPUT 0x0010 | Если указатель мыши находится в границах окна консоли, а окно имеет фокус клавиатуры, события мыши, созданные перемещением мыши, и нажатия кнопки помещаются в входной буфер. Эти события удаляются с помощью ReadFile или ReadConsole, даже если этот режим включен. Функцию ReadConsoleInput можно использовать для чтения MOUSE_EVENT входных записей из входного буфера. |
| ENABLE_PROCESSED_INPUT 0x0001 | CTRL+C обрабатывается системой и не помещается в входной буфер. Если входной буфер считывается с помощью ReadFile или ReadConsole, другие ключи управления обрабатываются системой и не возвращаются в буфере ReadFile или ReadConsole . Если режим ENABLE_LINE_INPUT также включен, пространство спинки, возврат каретки и символы канала строки обрабатываются системой. |
| ENABLE_QUICK_EDIT_MODE 0x0040 | Этот флаг позволяет пользователю использовать мышь для выбора и редактирования текста. Чтобы включить этот режим, используйте ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS. Чтобы отключить этот режим, используйте ENABLE_EXTENDED_FLAGS без этого флага. |
| ENABLE_WINDOW_INPUT 0x0008 | Взаимодействие с пользователем, изменяющее размер буфера экрана консоли, сообщается в входном буфере консоли. Сведения об этих событиях можно считывать из входного буфера приложениями с помощью функции ReadConsoleInput , но не с помощью ReadFile илиReadConsole. |
| ENABLE_VIRTUAL_TERMINAL_INPUT 0x0200 | Установка этого флага направляет подсистему обработки виртуального терминала для преобразования входных данных пользователей, полученных окном консоли, в последовательности виртуальных терминалов консоли , которые могут быть получены вспомогательным приложением с помощью функций ReadFile илиReadConsole . Обычное использование этого флага предназначено в сочетании с ENABLE_VIRTUAL_TERMINAL_PROCESSING в дескрипторе вывода для подключения к приложению, которое взаимодействует исключительно через последовательности виртуальных терминалов. |
Если параметр hConsoleHandle является дескриптором буфера экрана, режим может быть одним или несколькими из следующих значений. При создании буфера экрана оба режима вывода включены по умолчанию.
| Ценность | Значение |
|---|---|
| ENABLE_PROCESSED_OUTPUT 0x0001 | Символы, написанные функцией WriteFile или WriteConsole или эхом функции ReadFile или ReadConsole , анализируются для последовательностей элементов управления ASCII, и выполняется правильное действие. Серверное пространство, вкладка, колокольчик, возврат каретки и символы канала строки обрабатываются. Его следует включить при использовании последовательностей элементов управления или при установке ENABLE_VIRTUAL_TERMINAL_PROCESSING . |
| ENABLE_WRAP_AT_EOL_OUTPUT 0x0002 | При записи с помощью WriteFile или WriteConsole или эхо с помощью ReadFile илиReadConsole курсор перемещается в начало следующей строки, когда она достигает конца текущей строки. Это приводит к тому, что строки, отображаемые в окне консоли, будут автоматически прокручиваться, когда курсор перемещается за последнюю строку в окне. Это также приводит к прокрутке содержимого буфера экрана консоли (.). /отменяя верхнюю строку буфера экрана консоли) при переходе курсора за пределы последней строки в буфере экрана консоли. Если этот режим отключен, последний символ в строке перезаписывается с любыми последующими символами. |
| ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 | При написании с помощью WriteFile или WriteConsole символы анализируются для VT100 и аналогичных последовательностей символов управления, которые управляют перемещением курсора, цветом или шрифтом и другими операциями, которые также можно выполнять с помощью существующих API консоли. Дополнительные сведения см. в разделе "Последовательности виртуальных терминалов консоли". Убедитесь, что ENABLE_PROCESSED_OUTPUT заданы при использовании этого флага. |
| DISABLE_NEWLINE_AUTO_RETURN 0x0008 | При записи с помощью WriteFile или WriteConsole это добавляет дополнительное состояние в сквозную оболочку, которая может отложить операции перемещения курсора и прокрутки буфера. Обычно при установке ENABLE_WRAP_AT_EOL_OUTPUT текст достигает конца строки, курсор сразу переходит к следующей строке, а содержимое буфера будет прокручиваться по одной строке. В отличие от этого набора флагов курсор не перемещается к следующей строке, а операция прокрутки не выполняется. Написанный символ будет напечатан в окончательной позиции на строке, и курсор останется над этим символом, как если бы ENABLE_WRAP_AT_EOL_OUTPUT был отключен, но следующий печатный символ будет напечатан, как если бы ENABLE_WRAP_AT_EOL_OUTPUT включен. Не будет выполняться перезапись. В частности, курсор быстро перемещается вниз до следующей строки, прокрутка выполняется при необходимости, символ печатается, а курсор перемещает еще одну позицию. Обычное использование этого флага предназначено в сочетании с параметром ENABLE_VIRTUAL_TERMINAL_PROCESSING для лучшего эмулирования эмулятора терминала, в котором записывается окончательный символ на экране (.). /в правом нижнем углу) без активации немедленной прокрутки является требуемое поведение. |
| ENABLE_LVB_GRID_WORLDWIDE 0x0010 | API для написания атрибутов символов, включая WriteConsoleOutput и WriteConsoleOutputAttribute , позволяют использовать флаги из атрибутов символов для настройки цвета переднего плана и фона текста. Кроме того, был указан диапазон флагов DBCS с префиксом COMMON_LVB. Исторически эти флаги функционировали только на кодовых страницах DBCS для китайских, японских и корейских языков. За исключением ведущих байтов и конечных байтовых флагов, остальные флаги, описывающие рисование линий и обратное видео (.). /swap переднего плана и фоновых цветов) можно использовать для других языков, чтобы подчеркнуть части выходных данных. Установка этого флага режима консоли позволит использовать эти атрибуты на каждой кодовой странице на каждом языке. По умолчанию он отключен для обеспечения совместимости с известными приложениями, которые исторически воспользовались преимуществами консоли, игнорируя эти флаги на компьютерах, отличных от CJK, для хранения битов в этих полях в своих собственных целях или случайно. Обратите внимание, что использование режима ENABLE_VIRTUAL_TERMINAL_PROCESSING может привести к настройке флагов сетки LVB и обратного видео, пока этот флаг по-прежнему отключен, если присоединенное приложение запрашивает подчеркивание или обратное видео с помощью последовательностей виртуальных терминалов консоли. |