写软件/小游戏时小代码之合集(目前共21个)C++ 控制台

目录:
设置打印颜色

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) &&

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值