Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VC_Lect.doc
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
15 Мб
Скачать
☆

10.13.Высокоуровневые функции ввода и вывода консоли

Функции ReadFile(), WriteFile(), ReadConsole() и WriteConsole() позволяет приложению читать консольный ввод или записывать вывод как поток символов. Функции ReadConsole() и WriteConsole() действуют точно так же, как и ReadFile() и WriteFile() за исключением того, что они могут быть использованы или как Unicode-функции (с текстовыми параметрами типа Unicode) или как ANSI-функции (с текстовыми параметрами типа ANSI). Приложения, которые нуждаются в поддержке символов Unicode или ANSI должны использовать функции ReadConsole() и WriteConsole().

Функции ReadConsole() и WriteConsole() могут быть использованы только с дескрипторами консоли; функции ReadFile() и WriteFile() могут быть использованы с другими дескрипторами, такими как файлы или каналы. Функции ReadConsole() и WriteConsole() завершаются с ошибкой, если используются со стандартным дескриптором, который был перенаправлен и не является более консольным дескриптором.

Для получения ввода с клавиатуры процесс может использовать функции ReadFile() и ReadConsole() с дескриптором буфера ввода или он может использовать ReadFile() читать ввод из файла или канала, если STDIN был перенаправлен. Эти функции только возвращают события клавиатуры, которые могут быть транслированы в символы ANSI (или символы Unicode в случае использования ReadConsole()). Ввод, который может быть возвращен, включает комбинации управляющих клавиш. Функции не возвращают события клавиатуры, включающие функциональные клавиши или клавиши управления курсором. События ввода, генерируемые мышью, окном, получением фокуса или вызовом меню игнорируются.

Если режим ввода строк включен (режим по умолчанию), ReadFile() и ReadConsole() не возвращают управление вызывающему приложению, пока не будет нажата клавиша Enter. Если режим ввода строк запрещен, функции не возвратят управление до тех пор, пока не будет введен хотя бы один символ. В любом режиме все доступные символы читаются до тех пор, пока все они не будут прочитаны или не будет прочитано заданное число символов. Непрочитанные символы буферизуются до следующей операции чтения. Функции возвращают общее число фактически прочитанных символов. Если режим эхо-отображения включен, символы записываются в активный дисплейный буфер в текущую позицию курсора.

Процесс может использовать функции WriteFile() или WriteConsole() для записи в активный или неактивный дисплейный буфер или использовать функцию WriteFile() для записи в файл или канал, если STDOUT будет перенаправлен. Режим вывода и режим переноса строк управляют способом записи символом в экранный буфер.

Символы, записываемые функциями WriteFile() или WriteConsole() или эхо-отображаемые функциями ReadFile() или ReadConsole() вставляются в дисплейный буфер в текущую позицию курсора. После записи символа позиция курсора изменяется, перемещаясь к следующему знакоместу. Тем не менее, поведение курсора в конце строки зависит от установленного режима переноса символов в конце строки. Приложение может использовать функцию GetConsoleScreenBufferInfo() для получения текущей позиции курсора и SetConsoleCursorPosition() для ее установки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]