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;
}
#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;
}
相关文章推荐
- 终端/控制台设置颜色字体、光标定位和清屏
- 控制台输出光标定位
- vc6.0模拟tc在控制台定位光标
- 【 VC++ 】 控制台光标的相关操作
- Linux下光标定位与清屏函数
- linux下光标定位和清屏函数
- LinuxC\C++实现终端界面中光标的定位和清屏操作
- VC++中实现清屏
- vc调试:使用MAP文件快速定位程序崩溃代码行-zz
- VC++控制台下ping功能的代码
- C#操作word定位光标
- VC 控制台颜色设置
- VC++窗口应用程序中使用控制台输出
- VC的编码:WCHAR的控制台显示问题
- 将光标定位于某个元素之上
- 控制台界面控制(二):清屏
- JS光标定位到文本框字符串末尾
- 使用ScrollToCaret()可以将滚动条定位到当前光标处
- Source Insight复制粘贴后光标定位到行首更改操作
- ie、火狐、谷歌浏览器,光标定位问题