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


转载于: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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值