WriteConsoleOutput函数将字符和颜色属性数据写入控制台屏幕缓冲区中指定的矩形块字符单元格。要写入的数据取自源缓冲器中指定位置的相应尺寸的矩形块。
BOOL WriteConsoleOutput(
HANDLE 【hConsoleOutput】, | //处理控制台屏幕缓冲区 |
CONST CHAR_INFO *【lpBuffer】, | //指向具有要写入数据的缓冲区的指针 |
COORD 【dwBufferSize】, | //源列缓冲区的列大小 |
COORD 【dwBufferCoord】, | //左上方单元格写入 |
PSMALL_RECT 【lpWriteRegion】 | //指向要写入的矩形的指针 |
); |
参数
【hConsoleOutput】
标识屏幕缓冲区。句柄必须具有GENERIC_WRITE权限。
【lpBuffer】
指向包含要写入屏幕缓冲区的数据的源缓冲区。该指针被视为由【dwBufferSize】参数指定大小的CHAR_INFO结构的二维数组的原点。
【dwBufferSize】
指定由【lpBuffer】参数指向的缓冲区的字符单元格大小。COORD结构的X成员是列数; Y成员是行数。
【dwBufferCoord】
指定由【lpBuffer】参数指向的缓冲区中左上角单元格的坐标,以写入数据。X结构的X成员是列,Y成员是该行。
【lpWriteRegion】
指向SMALL_RECT结构。在输入时,结构成员指定要写入的屏幕缓冲矩形的左上和右下坐标。在输出中,结构成员指定写入的实际矩形。
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
备注
WriteConsoleOutput将源缓冲区和目标屏幕缓冲区视为二维数组(字符串的列和行)。【lpWriteRegion】参数指向的矩形指定要在屏幕缓冲区中写入的块的大小和位置。相同大小的矩形位于【lpBuffer】阵列的【dwBufferCoord】参数的坐标左上角的单元格中。来自矩形和源缓冲区矩形(其尺寸由【dwBufferSize】参数指定)的交点处的单元格的数据被写入目标矩形。
其源位置在源缓冲区矩形边界之外的目标矩形中的单元格不受写入操作的影响。换句话说,这些是没有数据可供写入的单元。
WriteConsoleOutput返回之前,会将【lpWriteRegion】的成员设置为受写入操作影响的实际屏幕缓冲区矩形。该矩形反映了源缓冲区中存在相应单元格的目标矩形中的单元格,因为WriteConsoleOutput将目标矩形的尺寸剪切到屏幕缓冲区的边界。
如果由【lpWriteRegion】指定的矩形完全位于屏幕缓冲区的边界之外,或者如果相应的矩形完全位于源缓冲区的边界之外,则不会写入任何数据。在这种情况下,该函数返回与【lpWriteRegion】参数集所指向的结构的成员,使得对成员小于剩下,或底部成员小于最佳 。要确定屏幕缓冲区的大小,请使用GetConsoleScreenBufferInfo功能。
WriteConsoleOutput对光标位置没有影响。
Windows NT:此函数使用控制台当前代码页中的Unicode字符或8位字符。控制台的代码页最初默认为系统的OEM代码页。要更改控制台的代码页,请使用SetConsoleCP或SetConsoleOutputCP功能,或使用CHCPsk或mode con cp select=命令。
也可以看看
CHAR_INFO, COORD, GetConsoleScreenBufferInfo, ReadConsoleOutput, ReadConsoleOutputAttribute, ReadConsoleOutputCharacter, SetConsoleCP, SetConsoleOutputCP, SMALL_RECT, WriteConsoleOutputAttribute, WriteConsoleOutputCharacter