测试系统:Windows10 专业版 64 位
目录
清空整个屏幕
系统函数(cmd命令)
system("cls");
这个方法很容易记住,就是调用系统命令,但是会闪屏,慢。
双缓冲
void cls(){//双缓冲
HANDLE hStdOut; CONSOLE_SCREEN_BUFFER_INFO csbi; DWORD count; DWORD cellCount; COORD homeCoords = { 0, 0 };
hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
if (hStdOut == INVALID_HANDLE_VALUE) return;
if (!GetConsoleScreenBufferInfo(hStdOut, &csbi)) return;
cellCount = csbi.dwSize.X *csbi.dwSize.Y;
if (!FillConsoleOutputCharacter(hStdOut, (TCHAR) ' ', cellCount, homeCoords, &count )) return;
if (!FillConsoleOutputAttribute(hStdOut, csbi.wAttributes, cellCount, homeCoords, &count )) return;
SetConsoleCursorPosition(hStdOut, homeCoords);
}
闪屏没那么严重,但还是会闪,比系统函数快。
单缓冲
void cls(){//单缓冲
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
COORD coordScreen = {0, 0};
SetConsoleCursorPosition( hConsole, coordScreen );
}
快,没有闪屏。
清空指定位置
清空坐标后p-1个字符(包括坐标上的字符)
void _Clearscreen(int x,int y,int p){
gotoxy(x-1,y);
for(int i=1;i<=p;i++)cout<<' ';
}
清空光标后p-1个字符(包括光标上的字符)
void _Clearscreen(int p){
printf("\b");
for(int i=1;i<=p;i++)cout<<' ';
}