Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Высокоуровневый консольный ввод/вывод




Высокоуровневые функции ввода/вывода предоставляют простой способ чтения или записи потока символов консоли. Высокоуровневая операция чтения получает символы из входного буфера консоли и сохраняет их в указанном буфере. Высокоуровневая операция вывода извлекает символы из указанного буфера и записывает их в дисплейный буфер в указанную курсором позицию и перемещает его (курсор) после вывода каждого символа.

Высокоуровневые функции ввода/вывода предоставляют Вам возможность выбора между функциями ReadFile() и WriteFile() и функциями ReadConsole() и WriteConsole(). Они идентичны за исключением двух важных отличий. Консольные функции поддерживают использование набора символов Unicode или ANSI; файловые функции не поддерживают Unicode. Кроме того, файловые функции можно использовать для получения доступа к файлам, каналам и последовательным устройствам коммуникации; консольные функции могут работать только с дескрипторами консоли. Это отличие важно, если приложение полагается на стандартные дескрипторы, которые могут быть перенаправлены.

При использовании одного из наборов высокоуровневых функций приложение может управлять цветовыми атрибутами символов, записываемыми в буфер вывода. Приложение может также использовать консольные режимы для управления следующими свойствами:

· отображением вводимых символов в дисплейном буфере (echoing of keyboard input);

· вод строк, при котором операция ввода не завершается до тех пор, пока не будет нажата клавиша Enter;

· автоматическая обработка клавиатурного ввода для обработки таких клавишных команд, как Enter, ctrl+c и других;

· автоматическая обработка вывода для обработки переноса строк, возврата каретки, пробелов и др.

Высокоуровневые режимы консоли

Нижеследующие режимы консольного ввода доступны для консольного буфера ввода при создании консоли:

· режим ввода строк;

· режим обработки ввода (processed input mode);

· режим эха ввода.

 

Оба следующих режима консольного вывода доступны для дисплейного буфера при его создании:

· режим обработки вывода (processed output mode);

· перенос в режиме EOL.

 

Все три режима ввода, вместе с режимом обработки вывода, спректированы для совместной работы. Лучше всего разрешить или отменить все эти режимы как группу. Когда все они разрешены, приложение работает в так называемом «cooked mode» (режим с автоматическим эхо-отображением вводимых данных на дисплее).  Когда все они запрещены, приложение находится в "raw mode" (сырой режим), когда вся обработка ввода должна обрабатываться самим приложением.

С помощью функции GetConsoleMode() приложение может определить текущий режим ввода или вывода. Вы можете разрешить или запретить любые из этих режимов с помощью задания соответствующих значений параметров функции SetConsoleMode(). Заметьте, что установка режима вывода для одного дисплейного буфера не оказывает влияния на другие дисплейные буферы.

Таблица

Режимы ввода и вывода

Режим Описание

ENABLE_PROCESSED_INPUT

  Указывает системе на необходимость обработки клавиш редактирования или управляющих клавиш, а не включения их в буфер ввода. Если при этом включен и режим ввода строк, пробелы и символы перевода каретки обрабатываются корректно. Забой (backspace) заставляет курсор переместиться назад на одну позицию без влияния на символ в позиции курсора. Возврат каретки преобразуется в комбинацию символов возврат каретки и перевод строки. Если режим эхо-отображения включен и вывод должен отображать редактирование системы, режим «processed output» должен быть включен для активного дисплейного буфера. В этом случае клавишная команда ctrl+c передается соответствующему обработчику независимо от того, включен ли ввод строк.

ENABLE_LINE_INPUT

  Используется совместно с дескриптором ввода консоли для того, чтобы заставить функции ReadFile() и ReadConsole() возвращать управление при нажатии клавиши  Enter. Если это режим выключен, функции возвращают управление, когда один или несколько символов доступны в буфере ввода

ENABLE_ECHO_INPUT

  Используется совместно с дескриптором ввода консоли для того, чтобы заставить функции ReadFile() и ReadConsole() записывать вводимые символы в активный дисплейный буфер. Символы отображаются в том случае, если процесс, вызывающий функции ReadFile() или ReadConsole() имеют открытый дескриптор активного дисплейного буфера.  Эхо-режим не может быть разрешен, если режим ввода строк не включен. Режим вывода активного дисплейного буфера оказывает влияние на то, как производится эхо-отображение символов

ENABLE_PROCESSED_OUTPUT

  Используется с дескриптором дисплейного буфера для того, чтобы заставить систему выполнять соответствующие действия для управляющих символов ANSI, которые записываются в дисплейный буфер. Обрабатываются символы backspace, tab, bell, carriage return и linefeed. Символ tab перемещает курсор в следующую позицию табуляции, которая находится через каждые 8 символов. Символ bell включает внутренний динамик на короткое время

ENABLE_WRAP_AT_EOL_OUTPUT










Последнее изменение этой страницы: 2018-04-12; просмотров: 318.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...