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

10.17.Низкоуровневые функции вывода консоли

Эти функции предоставляют прямой доступ к знакоместам дисплейного буфера. Один набор этих функций читает или записывает последовательность знакомест начиная с указанной позиции дисплейного буфера, в то время как другой набор функций позволяет читать или записывать прямоугольные блоки знакомест.

Таблица

Функции, читающие или записывающие последовательность знакомест начиная с указанной позиции дисплейного буфера

Функция

Назначение

ReadConsoleOutputCharacter

Читает строку Unicode или ANSI символов из дисплейного буфера

WriteConsoleOutputCharacter

Записывает строку Unicode или ANSI символов в дисплейный буфер

ReadConsoleOutputAttribute

Читает указанное число атрибутов цвета символов и фона из дисплейного буфера

WriteConsoleOutputAttribute

Записывает указанное число атрибутов цвета символов и фона в дисплейный буфер

FillConsoleOutputCharacter

Записывает единственный Unicode или ANSI символ в заданное число последовательных знакомест дисплейного буфера

FillConsoleOutputAttribute

Записывает атрибут цвета символа и фона в заданное число последовательных знакомест дисплейного буфера

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

Таблица

Функции, читающие или записывающие прямоугольные блоки знакомест начиная с указанной позиции дисплейного буфера

Функция

Назначение

ReadConsoleOutput

Читает символы и атрибуты цвета из указанного блока дисплейного буфера в указанный блок буфера приемника

WriteConsoleOutput

Записывает символы и атрибуты цвета в указанный блок дисплейного буфера, извлекая их из указанного блока заданного буфера источника

Эти функции трактуют буферы – дисплейный, приемник или источник – как двумерные массивы структур CHAR_INFO, которые содержат символы и атрибуты цвета для каждого знакоместа (ячейки). Функции оперируют с шириной и высотой (в знакоместах) буферов и указатель буфера трактуется как указатель на начальный элемент (0,0) двумерного массива. Эти функции используют структуру SMALL_RECT для указания прямоугольника при доступе к дисплейному буферу и координат верхней левой ячейки буфера источника или приемника для указания позиции соответствующего прямоугольника в этих буферах.

Эти функции автоматически отсекают указанный прямоугольник дисплейного буфера для того, чтобы «вписаться» в границы дисплейного буфера. Например, если прямоугольник имеет координаты нижнего правого угла (100, 50) – позиция 100, строка 50 – а дисплейный буфер имеет ширину всего 80 позиций, координаты отсекаются до (79,50). Подобным образом, этот усеченный прямоугольник может быть опять усечен для того, чтобы «вписаться» в границы буфера источника или приемника.

На приведенном ниже рисунке показана операция чтения с помощью функции ReadConsoleOutput(), при которой первое отсечение происходит при чтении из дисплейного буфера и второе – при записи прочитанного блока в буфер приемник. Функция возвращает действительные размеры скопированного прямоугольника.

Рис. 1. Операции отсечения при чтении и записи прямоугольного блока

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