Visual C++中使用gotoxy() / clrscr()

来源:互联网 发布:把矩阵转换为灰度图像 编辑:程序博客网 时间:2024/05/13 02:02

#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öschen
{
    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öschen
{
    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
}

几个常用函数,值得注意下