c语言当中的COORD ,GetStdHandle(),SetConsoleCursorPosition(),以及避免清屏和反复刷新新屏幕带来的闪烁效应

发布时间 2023-07-23 12:49:33作者: 翎刿

这是Windows API 定义的结构体类型COORD来表示字符在控制台屏幕上的坐标,结构体类型COORD定义为:

typedef struct _COORD
{
    SHORT x;
    SHORT y;
} COORD;

使用Windows API GetStdHandle()从一个特定的标准设备获取表示设备的句柄(用来标识不同设备的一个数值),SetConsoleCursorPosition()定位光标位置

void Gotoxy(int x,int y)
{
    COORD poe={x,y};
    HANDLE hOutput=GetStdHandle(STD_OUTPUT_HANDLE);  //获得标准输出设备的句柄
    SetConsoleCursorPosition(hOutput,poe);  //定位光标位置
    
}

隐藏光标

void HideCursor()
{
    HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_CURSOR_INFO CursorInfo;//console_cursor_info是一个结构体,用于描述控制台光标的信息
                               //包括光标的位置、大小和可见性等。cursor_info是该结构体的一个实例
                                //用于存储具体的光标信息。
    GetConsoleCursorInfo(handle,&CursorInfo);   //获取控制台光标信息
    CursorInfo.bVisible=0;                      //隐藏控制台光标
    SetConsoleCursorInfo(handle,&CursorInfo);   //设置控制台光标信息
}