Visual C++中使用gotoxy() / clrscr()等函数(转)

出自:http://blog.ednchina.com/lijin305/62382/message.aspx
--------------------------------------------------------------------------------
#include < windows.h >

void clrscr(void);
void clreol(void);
void clreoscr(void);
void gotoxy(int ,int );

// --- Funktionsimplementierung

/*********************************************************************************/

void clrscr(void) //clearscreen: gesamten Bildschirm leeren
{
CONSOLE_SCREEN_BUFFER_INFO   csbiInfo;             //variablendklaration
HANDLE   hConsoleOut;
COORD   Home = {0,0};
DWORD   dummy;

hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(hConsoleOut,&csbiInfo);

FillConsoleOutputCharacter(hConsoleOut,' ',csbiInfo.dwSize.X * csbiInfo.dwSize.Y,Home,&dummy);   //bis cursorposition leerzeichen ausgeben
csbiInfo.dwCursorPosition.X = 0;                 //cursorposition X koordinate festlegen
csbiInfo.dwCursorPosition.Y = 0;                 //cursorposition Y koordinate festlegen
SetConsoleCursorPosition(hConsoleOut,csbiInfo.dwCursorPosition);   //den cursor an die festgelegte koordinate setzen
}

/*********************************************************************************/

void clreol(void) //clear end of line: den rest der Zeile nach dem cursor l鰏chen
{
CONSOLE_SCREEN_BUFFER_INFO   csbiInfo;             //variablendklaration
HANDLE   hConsoleOut;
COORD   Home,pos;
DWORD   dummy;

hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(hConsoleOut,&csbiInfo);

Home = csbiInfo.dwCursorPosition;
pos.X = 80 - csbiInfo.dwCursorPosition.X;

FillConsoleOutputCharacter(hConsoleOut,' ',pos.X,Home,&dummy);
}

/*********************************************************************************/

void clreoscr(void) //clear end of screen: alles nach dem cursor l鰏chen
{
CONSOLE_SCREEN_BUFFER_INFO   csbiInfo;             //variablendklaration
HANDLE   hConsoleOut;
COORD   Home;
DWORD   dummy;

hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(hConsoleOut,&csbiInfo);

Home=csbiInfo.dwCursorPosition;
FillConsoleOutputCharacter(hConsoleOut,' ',csbiInfo.dwSize.X * csbiInfo.dwSize.Y,Home,&dummy);
}

/*********************************************************************************/

void gotoxy(int x,int y) //cursor an gewuenschte position auf dem bildschirm setzen
{
CONSOLE_SCREEN_BUFFER_INFO   csbiInfo;             //variablendklaration
HANDLE   hConsoleOut;

hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(hConsoleOut,&csbiInfo);

csbiInfo.dwCursorPosition.X = x;                 //cursorposition X koordinate festlegen
csbiInfo.dwCursorPosition.Y = y;                 //cursorposition Y koordinate festlegen
SetConsoleCursorPosition(hConsoleOut,csbiInfo.dwCursorPosition);   //den cursor an die festgelegte koordinate setzen
}

void   textcolor(int   color)  
{  
  switch   (color)  
  {  
  case   0:     //   White   on   Black  
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),  
                    FOREGROUND_INTENSITY   |   FOREGROUND_RED   |  
                    FOREGROUND_GREEN   |   FOREGROUND_BLUE);  
    break;  
  case   1:     //   Red   on   Black  
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),  
                      FOREGROUND_INTENSITY   |   FOREGROUND_RED);  
    break;  
  case   2:     //   Green   on   Black  
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),  
                    FOREGROUND_INTENSITY   |   FOREGROUND_GREEN);  
    break;  
  case   3:     //   Yellow   on   Black  
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),  
                    FOREGROUND_INTENSITY   |   FOREGROUND_RED   |  
                    FOREGROUND_GREEN);  
    break;  
  case   4:     //   Blue   on   Black  
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),  
                    FOREGROUND_INTENSITY   |   FOREGROUND_BLUE);  
    break;  
  case   5:     //   Magenta   on   Black  
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),  
                  FOREGROUND_INTENSITY   |   FOREGROUND_RED   |  
                  FOREGROUND_BLUE);  
    break;  
  case   6:     //   Cyan   on   Black  
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),  
                  FOREGROUND_INTENSITY   |   FOREGROUND_GREEN   |  
                  FOREGROUND_BLUE);  
    break;  
  case   7:     //   Black   on   Gray  
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),  
                BACKGROUND_INTENSITY   |   BACKGROUND_INTENSITY);  
    break;  
  case   8:     //   Black   on   White  
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),  
                BACKGROUND_INTENSITY   |   FOREGROUND_INTENSITY   |  
                BACKGROUND_RED   |   BACKGROUND_GREEN   |  
                BACKGROUND_BLUE);  
    break;  
  case   9:     //   Red   on   White  
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),  
                BACKGROUND_INTENSITY   |   FOREGROUND_INTENSITY   |  
                BACKGROUND_RED   |   BACKGROUND_GREEN   |  
                BACKGROUND_BLUE   |  
    FOREGROUND_RED);  
    break;  
  case   10:     //   Green   on   White  
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),  
                BACKGROUND_INTENSITY   |   FOREGROUND_INTENSITY   |  
                BACKGROUND_RED   |   BACKGROUND_GREEN   |  
                BACKGROUND_BLUE   |   FOREGROUND_GREEN);  
    break;  
  case   11:     //   Yellow   on   White  
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),  
                BACKGROUND_INTENSITY   |   FOREGROUND_INTENSITY   |  
                BACKGROUND_RED   |   BACKGROUND_GREEN   |  
                BACKGROUND_BLUE   |   FOREGROUND_RED   |  
                FOREGROUND_GREEN);  
    break;  
  case   12:     //   Blue   on   White  
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),  
                BACKGROUND_INTENSITY   |   FOREGROUND_INTENSITY   |  
                BACKGROUND_RED   |   BACKGROUND_GREEN   |  
                BACKGROUND_BLUE   |   FOREGROUND_BLUE);  
    break;  
  case   13:     //   Magenta   on   White  
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),  
                BACKGROUND_INTENSITY   |   FOREGROUND_INTENSITY   |  
                BACKGROUND_RED   |   BACKGROUND_GREEN   |  
                BACKGROUND_BLUE   |   FOREGROUND_RED   |  
                FOREGROUND_BLUE);  
    break;  
  case   14:     //   Cyan   on   White  
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),  
                BACKGROUND_INTENSITY   |   FOREGROUND_INTENSITY   |  
                BACKGROUND_RED   |   BACKGROUND_GREEN   |  
                BACKGROUND_BLUE   |   FOREGROUND_GREEN   |  
                FOREGROUND_BLUE);  
    break;  
  case   15:     //   White   on   White  
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),  
              BACKGROUND_INTENSITY   |   FOREGROUND_INTENSITY   |  
              BACKGROUND_RED   |   BACKGROUND_GREEN   |  
              BACKGROUND_BLUE   |   FOREGROUND_RED   |  
              FOREGROUND_GREEN   |   FOREGROUND_BLUE);  
    break;  
  default   :     //   White   on   Black  
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),  
              FOREGROUND_INTENSITY   |   FOREGROUND_RED   |  
              FOREGROUND_GREEN   |   FOREGROUND_BLUE);  
    break;  
  }  
}  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值