【C语言】- 设置控制台标题、编码、文字颜色、大小和字体

【C语言】- 设置控制台标题、编码、文字颜色、大小和字体

文章目录

  • 【C语言】- 设置控制台标题、编码、文字颜色、大小和字体
    • 1 - 设置控制台标题
    • 2 - 设置控制台编码
    • 3 - 设置控制台字体和大小
    • 参考链接

1 - 设置控制台标题

因为要用到 Windows API,所以需要包含头文件 Windows.h

cpp 复制代码
#include <Windows.h>

// 标题设置声明
BOOL WINAPI SetConsoleTitle(_In_ LPCTSTR lpConsoleTitle); 

调用示例

cpp 复制代码
#include <Windows.h>

int main(int argc, char* argv[])
{
	// 字符串常量 前面加上 L 会转换成宽字符 wchar_t*
	SetConsoleTitle(L"控制台应用测试");
	
	// 防止控制台退出
	system("pause");
	// 防止控制台退出 也可以使用 
	getchar();
}

效果如图:

2 - 设置控制台编码

若控制台输出中文为乱码,则可以使用 SetConsoleOutputCP 设置控制台输出代码页

c 复制代码
BOOL WINAPI SetConsoleOutputCP(_In_ UINT wCodePageID);

CP 表示 Code Page 代码页,GBK 为 936, UTF-8 为 65001。

更多内容 参见 Microsoft 官网 SetConsoleOutputCP

设置示例

c 复制代码
SetConsoleOutputCP(65001);

3 - 设置控制台字体和大小

设置控制台字体和大小,首先需要获取控制台句柄

c 复制代码
HANDLE WINAPI GetStdHandle(_In_ DWORD nStdHandle);

控制台输出句柄需要设置参数 STD_OUTPUT_HANDLE 参见官网 GetStdHandle

设置需要调用

cpp 复制代码
BOOL WINAPI SetCurrentConsoleFontEx(
  _In_ HANDLE               hConsoleOutput, // 控制台屏幕缓冲区的句柄
  _In_ BOOL                 bMaximumWindow, // 是否设置窗体最大化的字体,FALSE 设置当前的字体信息
  _In_ PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx // 字体信息结构体指针,见下方 配置结构体
);

配置结构体示例

cpp 复制代码
CONSOLE_FONT_INFOEX fontInfo;
fontInfo.cbSize = sizeof(fontInfo); // 结构体的大小
fontInfo.nFont = 0; // 系统控制台字体表中字体的索引
fontInfo.dwFontSize.X = 0;  // 字高
fontInfo.dwFontSize.Y = 20; // 字宽
fontInfo.FontFamily = FF_DONTCARE; // 字体间距和系列
fontInfo.FontWeight = FW_NORMAL; // 粗细
wcscpy_s(fontInfo.FaceName, L"Consolas"); // 字样的名称

获取句柄与设置示例

c 复制代码
HANDLE handle;
if ((handle= GetStdHandle(STD_OUTPUT_HANDLE)) != INVALID_HANDLE_VALUE)
{
	SetCurrentConsoleFontEx(handle, FALSE, &fontInfo);
}

更多内容,参见官网 SetCurrentConsoleFontEXCONSOLE_FONT_INFOEX

参考链接

相关推荐
AOwhisky40 分钟前
Python 学习笔记(第十一期)——运维自动化(上·后篇):进程级监控与子进程管理——psutil进阶
运维·开发语言·python·学习·云原生·运维开发
人工干智能1 小时前
Python 的链式调用:一连串的“点”调用
开发语言·python
wuyk5551 小时前
53.嵌入式开发中栈溢出的深度解析:从HardFault到解决方案
c语言·stm32·单片机
就不掉头发1 小时前
如何优化程序的性能
开发语言
手写码匠1 小时前
MCP协议从零实现:手写一个完整的 Model Context Protocol 服务器与客户端
开发语言·数据结构
HHFQ2 小时前
C语言学习笔记:命令行参数错误处理与可变参数机制
c语言
良木生香2 小时前
【C++初阶】STL—— Stack & Queue 从入门到精通:容器适配器、迭代器与经典面试题
java·开发语言·c++·算法·zookeeper
咩咩啃树皮2 小时前
第36篇:JavaScript 原型与原型链终极吃透——JS万物皆对象、继承核心原理
开发语言·javascript·ecmascript
lbb 小魔仙2 小时前
Python 性能分析工具实战:cProfile、memory_profiler、line_profiler 使用指南
开发语言·python
小小晓.2 小时前
C++小白记:vector
开发语言·c++·算法