您的位置:首页 > 其它

VC下控制台中的光标定位和清屏

2016-12-14 12:46 183 查看
转载于:http://blog.sina.com.cn/s/blog_a07344a5010116cw.html

#include<stdio.h>  

#include<iostream>  

#include<string.h>  

#include "base64.h"

#include "WriteLog.h"

#include <Windows.h>

//#include <system.h>

using namespace std;  

void   clrscr(int x,int y)  

{  
HANDLE   hConsole=GetStdHandle(STD_OUTPUT_HANDLE);  
//MyCls(hStdOut);

//HANDLE hConsole=hStdOut;
COORD coordScreen={x,y};//设置清屏后光标返回的屏幕左上角坐标  
BOOL bSuccess;  
DWORD cCharsWritten;  
CONSOLE_SCREEN_BUFFER_INFO   csbi;//保存缓冲区信息

DWORD   dwConSize;//当前缓冲区可容纳的字符数  

bSuccess=GetConsoleScreenBufferInfo(hConsole,&csbi);//获得缓冲区信息  
//PERR(bSuccess,"GetConsoleScreenBufferInfo");  
dwConSize=(csbi.dwSize.X-x)   *   (csbi.dwSize.Y-24);//(缓冲区容纳字符数目)要清空的面积,X是列数减去6列,Y默认是25,减去
//24等于1,x默认是80减去6等于74,因为光标定位在第0行第6列,所以就是
//清空第0行的第7列开始到第0行的结尾
//dwConSize=csbi.dwSize.X * csbi.dwSize.Y;
//用空格填充缓冲区  

bSuccess=FillConsoleOutputCharacter(hConsole,(TCHAR)' ',dwConSize,coordScreen,&cCharsWritten);  
//PERR(bSuccess,"FillConsoleOutputCharacter");  

bSuccess=GetConsoleScreenBufferInfo(hConsole,&csbi);//获得缓冲区信息  
//PERR(bSuccess,"ConsoleScreenBufferInfo");  

//填充缓冲区属性  
bSuccess=FillConsoleOutputAttribute(hConsole,csbi.wAttributes,dwConSize,coordScreen,&cCharsWritten);  
//PERR(bSuccess,"FillConsoleOutputAttribute");  

//光标返回屏幕左上角坐标  
bSuccess=SetConsoleCursorPosition(hConsole,coordScreen);  
//PERR(bSuccess,"SetConsoleCursorPosition");  
return;  

}  

void gotoxy(int x,int y)  

{  
HANDLE hConsole=GetStdHandle(STD_OUTPUT_HANDLE);  
//GotoConsoleXY(hStdOut,x,y);
COORD   coordScreen={x,y};  
SetConsoleCursorPosition(hConsole,coordScreen);
return;  

}  

int main(void)

{

gotoxy(2, 6);

printf(123456789");
gotoxy(2, 6);
Sleep(500);
printf("1\n");
Sleep(500);
printf("1\n");
Sleep(500);
printf("1\n");
Sleep(500);
printf("1\n");
Sleep(500);
printf("1\n");
Sleep(500);
printf("1\n");

Sleep(2000);
clrscr(2, 6);
getchar();
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: