ScrollConsoleScreenBuffer功能在屏幕缓冲区中移动一组数据。可以通过指定剪切矩形来限制移动的效果,因此剪切矩形外的屏幕缓冲区的内容不变。
BOOL ScrollConsoleScreenBuffer(
HANDLE 【hConsoleOutput】, | //控制台屏幕缓冲区的句柄 |
CONST SMALL_RECT *【lpScrollRectangle】, | //屏幕缓冲区的地址。移动 |
CONST SMALL_RECT *【lpClipRectangle】, | //受影响的屏幕缓冲区的地址。 |
COORD 【dwDestinationOrigin】, | //屏幕缓冲区的新位置。 |
CONST CHAR_INFO *【lpFill】 | //填写字符和颜色的地址 |
); |
参数
【hConsoleOutput】
标识控制台屏幕缓冲区。句柄必须具有GENERIC_WRITE权限。
【lpScrollRectangle】
指向SMALL_RECT结构,其成员指定要移动的屏幕缓冲区矩形的左上和右下坐标。
【lpClipRectangle】
指向SMALL_RECT结构,其成员指定受滚动影响的屏幕缓冲区矩形的左上和右下坐标。该指针可以为NULL。
【dwDestinationOrigin】
指定【lpScrollRectangle】内容的新位置的左上角。
【lpFill】
指向CHAR_INFO结构,指定用于填充【lpScrollRectangle】和【lpClipRectangle】的交集内的单元格的字符和颜色属性,这些单元格作为移动的结果留空。
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
备注
ScrollConsoleScreenBuffer将由【lpScrollRectangle】参数指定的屏幕缓冲区的矩形区域的内容复制到屏幕缓冲区的其他区域。目标矩形具有与【lpScrollRectangle】矩形相同的尺寸,其左上角由【dwDestinationOrigin】参数指定的坐标。与【lpFill】参数指定的字符和颜色属性填充不与目标矩形重叠的部分【lpScrollRectangle】.
剪切矩形适用于【lpScrollRectangle】矩形和目标矩形中所做的更改。例如,如果裁剪矩形不包含由【lpFill】的内容填充的区域,则该区域的原始内容将保持不变。
如果滚动或目标区域超出屏幕缓冲区的尺寸,则它们被剪切。例如,如果【lpScrollRectangle】是由(0,0)和(19,19)和【dwDestinationOrigin】包含的区域(10,15),则目标矩形是(10,15)和(29 ,34)。但是,如果屏幕缓冲区的宽度为50个字符,高为30个字符,则将目标矩形裁剪为(10,15)和(29,29)。根据【lpClipRectangle】,如果参数指定SMALL_RECT结构,屏幕缓冲区的更改也会被剪切。如果裁剪矩形被指定为(0,0)和(49,19),则只会进行屏幕缓冲区的该区域中发生的更改。
Windows NT:此函数使用控制台当前代码页中的Unicode字符或8位字符。控制台的代码页最初默认为系统的OEM代码页。要更改控制台的代码页,请使用SetConsoleCP或SetConsoleOutputCP功能,或使用CHCPsk或mode con cp select=命令。
也可以看看
CHAR_INFO, SetConsoleCP, SetConsoleOutputCP, SetConsoleWindowInfo, SMALL_RECT