在 Windows 10 上用 C 设置控制台字体

问题描述 投票:0回答:1

我正在尝试在运行时更改控制台应用程序中控制台字体的大小。

查看Windows文档,我发现了以下函数:

GetCurrentConsoleFont
(和
GetCurrentConsoleFontEx
) 和
SetCurrentConsoleFontEx

CONSOLE_FONT_INFO prevFontInfo = {sizeof(prevFontInfo)};
GetCurrentConsoleFont( GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &prevFontInfo 
);

CONSOLE_FONT_INFO fontInfo = {0};
//fontInfo.cbSize = sizeof(prevFontInfo);
fontInfo.dwFontSize.X = 30;
fontInfo.dwFontSize.Y = 70;
//fontInfo.FontWeight = 700;

SetCurrentConsoleFontEx( GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &fontInfo );

... (Some Irrelevant Code Here)

SetCurrentConsoleFontEx( GetStdHandle(STD_OUTPUT_HANDLE), FALSE, 
&prevFontInfo );

目前我收到以下警告:

函数“GetCurrentConsoleFont”的隐式声明

函数“SetCurrentConsoleFont”的隐式声明

我尝试使用

GetConsoleFontEx
(原因
FontWeight
cbSize
被注释掉)没有成功。我也使用了
CONSOLE_FONT_INFOEX
,这导致了以下错误:

未知类型名称“CONSOLE_FONT_INFOEX”

我读到有必要使用以下内容:

#define _WIN32_WINNT 0x0500

我还尝试了几种变体(0x0502、0x0600 等),但似乎没有任何改变警告/错误。

我包含以下 Windows 标头,并使用 -lkernel32 进行编译。

#define _WIN32_WINNT 0x0500

#include <windows.h>
#include <Wincon.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>

我希望在运行时更改 Windows 终端的 C 字体大小。 我怎么做?为什么这不起作用?

c windows winapi windows-console
1个回答
0
投票

我也遇到过同样的问题,我相信问题在于我安装了 gcc 和 MinGW。

起初我的代码编译得很好而且很完美,我决定更新我的 MinGW 数据库并安装了 pthreads.h,一旦我这样做了,甚至没有对我的代码做任何事情,所有 windows.h 函数和 #define 都无法使用。

我通过 MinGW 重新安装了 gcc ,甚至尝试使用 g++ 进行编译;一切都是为了不。我在另一个文件夹中创建了一个新文件,确保我的包含文件正确,并确保我已建立并解释了包含文件及其依赖项;与之前的结果相同。

最后,我疯了,卸载了MinGW然后走了,然后我想起了MinGW的更年轻/更新的型号:MSYS2。我从“https://www.msys2.org/wiki/MSYS2-installation/”安装了 MSYS2 并使用 pacman,确保一切都是最新的,并在控制面板中重置了环境变量并重新编译;幸福。

不过,您需要确保您的代码是否使用适用于 x86 或 Win32 的代码编写,然后您需要将代码转换为适用于 64 的其他结构。

您可能不需要走到我旅程的最后一步来修复这个恼人的错误,因为您可以比我结束的地方提前几步解决它。

© www.soinside.com 2019 - 2024. All rights reserved.