目录
控制台函数GetStdHandle(获取控制台句柄)光标相关SetConsoleCursorPositionCOORDSetConsoleCursorInfoCONSOLE_CURSOR_INFOSetConsoleTextAttribute隐藏控制台光标设置输出位置
控制台函数
控制台相关函数API
https://docs.microsoft.com/en-us/windows/console/console-functions
GetStdHandle(获取控制台句柄)
检索指定标准设备(标准输入,标准输出或标准错误)的句柄。
HANDLE WINAPI GetStdHandle(
_In_ DWORD nStdHandle
);
nStdHandle [输入] :
STD_INPUT_HANDLE 标准输入
STD_OUTPUT_HANDLE 标准输出
STD_ERROR_HANDLE 标准错误
光标相关
SetConsoleCursorPosition
设置光标在指定控制台屏幕缓冲区中的位置
BOOL WINAPI SetConsoleCursorPosition(
_In_ HANDLE hConsoleOutput,
_In_ COORD dwCursorPosition
);
hConsoleOutput [输入] :控制台屏幕缓冲区的句柄,通过GetStdHandle获取
dwCursorPosition [in] :一个COORD结构,以字符为单位指定新的光标位置。坐标是屏幕缓冲区字符单元格的列和行。
COORD
typedef struct _COORD {
SHORT X;
SHORT Y;
} COORD, *PCOORD;
就是一个二维坐标点
SetConsoleCursorInfo
为指定的控制台屏幕缓冲区设置光标的大小和可见性。
BOOL WINAPI SetConsoleCursorInfo(
_In_ HANDLE hConsoleOutput,
_In_ const CONSOLE_CURSOR_INFO *lpConsoleCursorInfo
);
hConsoleOutput [输入] :控制台屏幕缓冲区的句柄,通过GetStdHandle获取
lpConsoleCursorInfo [in] :指向CONSOLE_CURSOR_INFO结构的指针
CONSOLE_CURSOR_INFO
包含有关控制台光标的信息。
typedef struct _CONSOLE_CURSOR_INFO {
DWORD dwSize;
BOOL bVisible;
} CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO;
dwSize:光标填充的字符单元格的百分比。此值在1到100之间。
注意windows控制台dwSize值默认为1,Linux一般为100
bVisible:光标的可见性。如果光标可见,则此成员为TRUE。
SetConsoleTextAttribute
写入控制台屏幕缓冲区的字符的属性,控制
BOOL WINAPI SetConsoleTextAttribute(
_In_ HANDLE hConsoleOutput,
_In_ WORD wAttributes
);
hConsoleOutput [输入] :控制台屏幕缓冲区的句柄,通过GetStdHandle获取
wAttributes [IN] :字符属性
字符属性可以分为两类:颜色和DBCS。
设置文字颜色:
FOREGROUND_BLUE 蓝色
FOREGROUND_GREEN 绿色
……
详情:https://docs.microsoft.com/en-us/windows/console/console-screen-buffers#_win32_font_attributes
隐藏控制台光标
CONSOLE_CURSOR_INFO cciCursor; //控制台光标的信息
HANDLE hout; //句柄
hout = GetStdHandle(STD_OUTPUT_HANDLE); //获取控制台标准输入句柄
if (GetConsoleCursorInfo(hout, &cciCursor))//获取控制台屏幕缓冲区光标的大小和可见性
{
//设置光标不可见
cciCursor.bVisible = false;
SetConsoleCursorInfo(hout, &cciCursor);
}
设置输出位置
void gotoxy(int x, int y)
{
HANDLE hout;
COORD pos;
pos.X = x;
pos.Y = y;
hout = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hout, pos);
}