ReadConsoleOutput

【勇芳软件工作室】汉化HomePreviousNext

ReadConsoleOutput功能从控制台屏幕缓冲区中的矩形块字符单元读取字符和颜色属性数据,并将该数据写入目标缓冲区中指定位置的矩形块。

BOOL ReadConsoleOutput(

HANDLE 【hConsoleOutput】,//控制台屏幕缓冲区的句柄
PCHAR_INFO 【lpBuffer】,//接收数据的缓冲区的地址
COORD 【dwBufferSize】,//目标缓冲区的列行大小
COORD 【dwBufferCoord】,//左上角的单元格写入
PSMALL_RECT 【lpReadRegion】//要读取的矩形的地址
); 

参数

【hConsoleOutput】

标识屏幕缓冲区。句柄必须具有GENERIC_READ权限。

【lpBuffer】

指向接收从屏幕缓冲区读取的数据的目标缓冲区。该指针被视为由【dwBufferSize】参数指定大小的CHAR_INFO结构的二维数组的原点。

【dwBufferSize】

指定【lpBuffer】参数的字符单元格的大小。COORD结构的X成员是列数; Y成员是行数。

【dwBufferCoord】

指定接收从屏幕缓冲区读取的数据的【lpBuffer】参数中左上方单元格的坐标。COORD结构的X成员是列,Y成员是该行。

【lpReadRegion】

指向SMALL_RECT结构。在输入时,结构成员指定要从中读取功能的屏幕缓冲矩形的左上和右下坐标。在输出中,结构成员指定函数从中复制的实际矩形。

返回值

如果函数成功,返回值不为零。

如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.

备注

ReadConsoleOutput将屏幕缓冲区和目标缓冲区视为二维数组(字符列的列和行)。【lpReadRegion】参数指向的矩形指定要从屏幕缓冲区读取的块的大小和位置。相同大小的目标矩形位于【lpBuffer】阵列中的【dwBufferCoord】参数的坐标左上角的单元格之间。从屏幕缓冲区源矩形中的单元读取的数据将复制到目标缓冲区中的相应单元格。如果相应的单元格在目标缓冲区矩形的边界之外(其尺寸由【dwBufferSize】参数指定),则不复制数据。

对应于不在屏幕缓冲区边界内的坐标的目标缓冲区中的单元格保持不变。换句话说,这些是没有屏幕缓冲器数据可用于读取的单元。

ReadConsoleOutput返回之前,将【lpReadRegion】参数指向的结构的成员设置为将单元格复制到目标缓冲区的实际屏幕缓冲区矩形。这个矩形反映了目标缓冲区中存在相应单元格的源矩形中的单元格,因为ReadConsoleOutput会剪切源矩形的尺寸以适合屏幕缓冲区的边界。

如果由【lpReadRegion】指定的矩形完全位于屏幕缓冲区的边界之外,或者如果相应的矩形完全位于目标缓冲区的边界之外,则不会复制任何数据。在这种情况下,函数返回与【lpReadRegion】参数集指向的结构的成员,使得成员小于剩下,或底部成员小于最佳 。要确定屏幕缓冲区的大小,请使用GetConsoleScreenBufferInfo功能。

ReadConsoleOutput功能对屏幕缓冲区的光标位置没有影响。屏幕缓冲区的内容不会被功能所改变。

Windows NT:此函数使用控制台当前代码页中的Unicode字符或8位字符。控制台的代码页最初默认为系统的OEM代码页。要更改控制台的代码页,请使用SetConsoleCPSetConsoleOutputCP功能,或使用CHCPskmode con cp select=命令。

也可以看看

CHAR_INFO, COORD, ReadConsoleOutputAttribute, ReadConsoleOutputCharacter, SetConsoleCP, SetConsoleOutputCP, SMALL_RECT, WriteConsoleOutput