低级控制台输出功能可以直接访问屏幕缓冲区的字符单元格。一组函数从屏幕缓冲区中的任何位置开始读取或写入连续单元。另一组函数从矩形块单元读取或写入。
从指定的单元开始,以下功能从屏幕缓冲区中读取或写入指定数量的连续字符单元格。
功能 | 描述 | ||
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操作,当从屏幕缓冲区读取块时,再次将块复制到目标缓冲区时,进行剪切。该函数报告其复制的实际屏幕缓冲区矩形。