VC++中实现清屏
方法一:直接在程序中调用cmd命令
1 #include <stdlib.h> 2 3 void main() 4 { 5 system("cls"); 6 }
方法二:通过API,自己封装函数
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
cls( hConsole );
CloseHandle( hConsole );
#define PERR(bSuccess, api){if(!(bSuccess)) printf("%s:Error %d from %s on line %d\n", __FILE__, GetLastError(), api, __LINE__);}
1 void cls( HANDLE hConsole ) 2 { 3 COORD coordScreen = { 0, 0 }; /* 定义光标的位置*/ 4 BOOL bSuccess; 5 DWORD cCharsWritten; 6 CONSOLE_SCREEN_BUFFER_INFO csbi; /* 获取缓冲区信息 */ 7 DWORD dwConSize; /* 当前缓冲区的字符数 */ 8 9 /* 获取当前缓冲区的字符数 */ 10 11 bSuccess = GetConsoleScreenBufferInfo( hConsole, &csbi ); 12 PERR( bSuccess, "GetConsoleScreenBufferInfo" ); 13 dwConSize = csbi.dwSize.X * csbi.dwSize.Y; 14 15 /* 用空格填充整个屏幕 */ 16 17 bSuccess = FillConsoleOutputCharacter( hConsole, (TCHAR) ' ', 18 dwConSize, coordScreen, &cCharsWritten ); 19 PERR( bSuccess, "FillConsoleOutputCharacter" ); 20 21 /* 获取当前文本属性 */ 22 23 bSuccess = GetConsoleScreenBufferInfo( hConsole, &csbi ); 24 PERR( bSuccess, "ConsoleScreenBufferInfo" ); 25 26 /* 相应地设置缓冲区属性 */ 27 28 bSuccess = FillConsoleOutputAttribute( hConsole, csbi.wAttributes, 29 dwConSize, coordScreen, &cCharsWritten ); 30 PERR( bSuccess, "FillConsoleOutputAttribute" ); 31 32 /* 把光标放在(0,0) */ 33 34 bSuccess = SetConsoleCursorPosition( hConsole, coordScreen ); 35 PERR( bSuccess, "SetConsoleCursorPosition" ); 36 return; 37 }