侧边栏壁纸
博主头像
Amelie

但行好事,莫问前程

  • 累计撰写 19 篇文章
  • 累计创建 34 个标签
  • 累计收到 0 条评论

Windows控制台相关函数

Amelie
2021-04-24 / 0 评论 / 0 点赞 / 130 阅读 / 2,209 字
温馨提示:
本文最后更新于 2022-03-11,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

设置控制台大小(方案一)

// #include <stdlib.h>
system("mode con cols=80 lines=20");

设置控制台大小(方案二)

// #include <Windows.h>
COORD dwSize = { x, y }; // 设置缓冲区大小,x、y为宽和高
SMALL_RECT srWindow = { 0, 0, dwSize.X - 1, dwSize.Y - 1 }; // 设置窗口大小
SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), 1, &srWindow);
SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), dwSize);
SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), 1, &srWindow);
SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), dwSize);

注意:有时候调用一遍此函数可能不会生效,此时需要调用两次

设置控制台颜色

注意:这种方法会改变整个控制台内容的显示颜色,如果想自定义颜色,请看 改变字体颜色

// #include <stdlib.h>
system("color 0f");

在控制台输入 color --help 可以查看 color 命令的详细信息:

设置默认的控制台前景和背景颜色。

COLOR [attr]

  attr        指定控制台输出的颜色属性。

颜色属性由两个十六进制数字指定 -- 第一个
对应于背景,第二个对应于前景。每个数字
可以为以下任何值:

    0 = 黑色       8 = 灰色
    1 = 蓝色       9 = 淡蓝色
    2 = 绿色       A = 淡绿色
    3 = 浅绿色     B = 淡浅绿色
    4 = 红色       C = 淡红色
    5 = 紫色       D = 淡紫色
    6 = 黄色       E = 淡黄色
    7 = 白色       F = 亮白色

如果没有给定任何参数,此命令会将颜色还原到 CMD.EXE 启动时
的颜色。这个值来自当前控制台
窗口、/T 命令行开关或 DefaultColor 注册表
值。

如果尝试使用相同的
前景和背景颜色来执行
 COLOR 命令,COLOR 命令会将 ERRORLEVEL 设置为 1。

隐藏控制台光标

// #include <Windows.h>
CONSOLE_CURSOR_INFO cci;
GetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci);
cci.bVisible = FALSE;
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci);

改变字体颜色

// #include <Windows.h>
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 字符属性);
例:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);

字符属性:

Attribute含义
FOREGROUND_BLUE文本颜色包含蓝色。
FOREGROUND_GREEN文本颜色包含绿色。
FOREGROUND_RED文本颜色包含红色。
FOREGROUND_INTENSITY文本颜色增强(高亮)。
BACKGROUND_BLUE背景色包含蓝色。
BACKGROUND_GREEN背景色包含绿色。
BACKGROUND_RED背景色包含红色。
BACKGROUND_INTENSITY背景色增强(高亮)。
COMMON_LVB_LEADING_BYTE前导字节。
COMMON_LVB_TRAILING_BYTE尾随字节。
COMMON_LVB_GRID_HORIZONTAL顶部水平。
COMMON_LVB_GRID_LVERTICAL左垂直。
COMMON_LVB_GRID_RVERTICAL右垂直。
COMMON_LVB_REVERSE_VIDEO反转前景和背景属性。
COMMON_LVB_UNDERSCORE下划线。

前景属性指定文本颜色。 背景属性指定用于填充单元格背景的颜色。

比如亮白色就是:

FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE

设置光标位置

// #include <Windows.h>
COORD coord;
coord.X = 1; // 光标的X轴坐标
coord.Y = 1; // 光标的Y轴坐标
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);

设置控制台标题

// #include <Windows.h>
// Visual Studio
SetConsoleTitle(L"标题");
// gcc
SetConsoleTitle("标题");

注意:

Visual Studio 项目中要使用 L"标题" (const wchar_t *)

gcc 编译直接使用 "标题" (const char *)

0

评论区