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


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

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

Функция

Описание

ReadConsoleOutputCharacter Копирует строку символов Unicode или ANSI из экранного буфера. 
WriteConsoleOutputCharacter Записывает строку символов Unicode или ANSI в экранный буфер. 
ReadConsoleOutputAttribute Копирует строку текста и атрибуты цвета фона из экранного буфера дисплея. 
WriteConsoleOutputAttribute Записывает строку текста и атрибуты цвет фона в экранном буфере дисплея. 
FillConsoleOutputCharacter Записывает одиночный символ Unicode или ANSI в заданном числе последовательных ячеек в экранном буфере. 
FillConsoleOutputAttribute Записывает текст и комбинацию атрибутов цвета фона в заданном числе последовательных ячеек в экранном буфере. 

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

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

 

Функция

Описание

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

 

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

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

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

Экранный буфер окна с буфером назначения.

 

Назад в оглавление темы
На главную страницу темы

Hosted by uCoz