Функция WriteConsoleOutput


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

Синтаксис

BOOL WriteConsoleOutput(

HANDLEhConsoleOutpu,         // дескриптор экранного буфера
CONST CHAR_INFO
*lpBuffer,   // буфер данных
COORD
dwBufferSize,          // размер буфера данных
COORD
dwBufferCoord,         // координаты ячейки
PSMALL_RECT
lpWriteRegion    // прямоугольник для чтения

);

Параметры

hConsoleOutput

[in] Дескриптор экранного буфера консоли. Дескриптор должен иметь право доступа GENERIC_READ. Для получения дополнительной информации, см. статью Защита буфера и права доступа в консоли.

lpBuffer

[in] Указатель на исходный буфер, содержащий данные, которые будут записаны в экранный буфер консоли. Этот указатель рассматривается как начало координат двухмерного массива структур CHAR_INFO, размер которых указан в параметре dwBufferSize. Общий размер массива должен быть меньше чем 64КБ.

dwBufferSize

[in] Размер буфера, указанного параметром lpBuffer, в символьных знакоместах. член X структуры COORD - число столбцов; член Y - число рядов.

dwBufferCoord

[in] Координаты левой верхней ячейки в буфере, указанном параметром lpBuffer. Член X структуры COORD - столбец, а член Y - ряд.

lpWriteRegion

[in/out] Указатель на структуру SMALL_RECT. При вводе данных для записи, члены структуры устанавливают левую верхнюю и нижнюю правую координаты прямоугольника экранного буфера консоли. При выводе данных, члены структуры устанавливают фактический прямоугольник, который был использован.

Возвращаемые значения

Если функция завершается успешно, величина возвращаемого значения - не ноль.

Если функция завершается с ошибкой, величина возвращаемого значения - ноль. Чтобы получать расширенные данные об ошибках, вызовите функцию GetLastError.

Замечания

Функция WriteConsoleOutput рассматривает исходный буфер и экранный буфер назначения, как двухмерные массивы (столбцы и ряды символьных знакомест). Прямоугольник, указанный параметром lpWriteRegion устанавливает размер и место блока, который будет записан в экранном буфере консоли. Прямоугольник того же самого размера помещается от его левой верхней ячейкой в координатах параметра dwBufferCoord в массиве lpBuffer. Данные из ячеек, которые находятся в пересечении этого прямоугольника и исходного буферного прямоугольника (размеры которого указаны параметром dwBufferSize), записываются в прямоугольнике назначения.

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

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

Если место прямоугольника определяется параметром lpWriteRegion полностью вне границ экранного буфера консоли, или если соответствующий прямоугольник установлен полностью вне границ исходного буфера, никакие данные не записываются. В этом случае функция возвращает значение членам структуры, указывая что параметр lpWriteRegion установлен так, что член Right является меньше чем Left, или член Bottom - меньше, чем Top. Чтобы выяснять размер экранного буфера консоли, используйте функцию GetConsoleScreenBufferInfo.

Функция WriteConsoleOutput не имеет никакого действия на позицию курсора.

Windows NT/2000/XP: эта функция использует или символы Unicode или 8-разрядные символы от текущей кодовой страницы консоли. Кодовая страница консоли вначале устанавливается по умолчанию как системная кодовая страница (OEM). Чтобы изменить кодовую страницу консоли, используйте функции SetConsoleCP или SetConsoleOutputCP, или используйте команды chcp или mode con cp select =.

Windows 95/98/Me: функция WriteConsoleOutputW поддерживает Microsoft Layer for Unicode. Чтобы использовать его, Вы должны добавить некоторые файлы к вашему приложению, как изложено в Microsoft Layer for Unicode для систем Windows 95/98/Me.

Код примера

Пример смотри в статье Чтение и запись блоков символов и атрибутов.

Смотри также

Обзор консольных приложений, Функции консоли, CHAR_INFO, COORD, GetConsoleScreenBufferInfo, ReadConsoleOutput, ReadConsoleOutputAttribute, ReadConsoleOutputCharacter, SetConsoleCP, SetConsoleOutputCP, SMALL_RECT, WriteConsoleOutputAttribute, WriteConsoleOutputCharacter

Размещение и совместимость WriteConsoleOutput

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да

Windows Me

Да

Windows 98

Да

Windows 95

Да

Используемая библиотека

Kernel32.lib

Заголовочный файл

 

- объявлено в

Wincon.h

- включено в

Windows.h

Unicode

Реализуется как Unicode и ANSI в версиях Windows NT/2000/XP. А также поддерживает Microsoft Layer for Unicode

Замечания по платформе

Не имеется

 

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

Hosted by uCoz