目录:
设置打印颜色
COORD 类型结构体
延时 Sleep
设置控制台光标位置 SetConsoleCursorPosition
获取/设置控制台模式 GetConsoleMode / SetConsoleMode
获取鼠标在控制台的位置
system 函数
设置控制台标题 SetConsoleTitle
检测按键状态 GetKeyState / GetAsyncKeyState
检查控制台是否有键盘输入 _kbhit
读取键盘输入 _getch
设置控制台字体大小
蜂鸣 Beep
检索指定的系统指标或系统配置设置 GetSystemMetrics
设置窗口的大小 / 位置 / Z轴顺序 SetWindowPos
窗口显示 ShowWindow
合成击键事件 keybd_event
合成鼠标事件 mouse_event
合成键盘/鼠标事件 SendInput
弹出模态对话框 MessageBox
设置控制台光标信息 SetConsoleCursorInfo
注:红字是输出/设置/合成,蓝字是输入/获取/检测。顺序随便排的。
1. 设置打印颜色(windows.h)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);
可封装为函数以简洁代码:
void color(int a)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), a);
}
颜色对照表
2. COORD 类型结构体(windows.h)
windows.h 中用于定义控制台屏幕缓冲区中字符单元格坐标的结构体类型。坐标系 (0,0) 的原点位于缓冲区的顶部左侧单元格。
COORD 是 coordinate(坐标)的简写。
//句法
typedef struct _COORD {
SHORT X;
SHORT Y;
} COORD, *PCOORD;
3. 延时 Sleep(windows.h)
Sleep(1000); //程序暂停1000ms
4. 设置控制台光标位置 SetConsoleCursorPosition(windows.h)
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), {x,y});
可封装为函数:
void gotoxy(short x,short y)
{
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),{x,y});
}
5. 获取/设置控制台模式 GetConsoleMode / SetConsoleMode(windows.h)
//句法
BOOL WINAPI GetConsoleMode(
_In_ HANDLE hConsoleHandle,
_Out_ LPDWORD lpMode
);
BOOL WINAPI SetConsoleMode(
_In_ HANDLE hConsoleHandle,
_In_ DWORD dwMode
);
例如,我们可以写一个“禁用快速编辑模式”且“启用鼠标输入”的功能:
HANDLE hInput = GetStdHandle(STD_INPUT_HANDLE);
DWORD mode;
GetConsoleMode(hInput, &mode);
mode &= ~ENABLE_QUICK_EDIT_MODE;
mode |= ENABLE_MOUSE_INPUT;
SetConsoleMode(hInput, mode | ENABLE_MOUSE_INPUT);
其它参数详见:
https://docs.microsoft.com/en-us/windows/console/getconsolemode
https://docs.microsoft.com/en-us/windows/console/setconsolemode
6. 获取鼠标在控制台的位置(windows.h)
与【5】配合使用。
COORD GetLocation()
{
HANDLE hInput = GetStdHandle(STD_INPUT_HANDLE);
DWORD mode;
GetConsoleMode(hInput, &mode);
mode &= ~ENABLE_QUICK_EDIT_MODE;
mode |= ENABLE_MOUSE_INPUT;
SetConsoleMode(hInput, mode | ENABLE_MOUSE_INPUT);
INPUT_RECORD record;
DWORD n;
for (COORD pos = {}; ReadConsoleInput(hInput, &record, 1, &n) &&