C语言控制台窗口图形界面编程之五 控制文本移动的函数2015-01-16控制文本的移动是控制台窗口界面编程的一个很重要的功能,有了这个功能我们可以实现界面的滚动。下面我们介绍一个控制文本移动的函数,如下:
BOOL ScrollConsoleScreenBuffer( //文本移动函数HANDLE hConsoleOutput,//句柄const SMALL_RECT *lpScrollRectangle,//移动区域const SMALL_RECT *lpClipRectangle,//裁剪区域,如果为NULL,那么将代表整个屏幕缓冲区COORD dwDestinationOrigin,//移动到的位置,这个点将成为移动区域的左上顶点const CHAR_INFO *lpFill //空出区域的填充字符);
下面来看一个移动文本的样例程序,如下
#include <stdio.h>#include <conio.h>#include <Windows.h>#include <stdlib.h>int main(){HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE);//获得标准输出设备句柄CONSOLE_SCREEN_BUFFER_INFO csbi;//定义窗口缓冲区信息结构体SMALL_RECT scroll;//定义移动区域COORD pos = {0, 5}; //移动位置CHAR_INFO chFill; //定义填充字符GetConsoleScreenBufferInfo(handle_out, &csbi);//获得窗口缓冲区信息//定义填充字符的各个参数及属性chFill.Char.AsciiChar = " ";chFill.Attributes = csbi.wAttributes;//输出文本printf("00000000000000000000000000000
");printf("11111111111111111111111111111
");printf("22222222222222222222222222222
");printf("33333333333333333333333333333
");//确定区域scroll.Left = 1;scroll.Top = 1;scroll.Right = 10;scroll.Bottom = 2;ScrollConsoleScreenBuffer(handle_out, &scroll, NULL, pos, &chFill); //移动文本return 0;}

在上面的样例程序中,裁剪区域是整个控制台窗口的屏幕缓冲区,现在如果我们把裁剪区域设定为与移动区域一样,也就是说ScrollConsoleScreenBuffer函数的第三个参数也改成&scroll,那么结果会怎么样呢?