c++ - 在全屏模式下设置控制台字体大小

标签 c++ winapi fonts windows-xp console-application

我使用 SetConsoleDisplayMode()将控制台切换到全屏模式。它是 80x25,居中,字体很小,我想放大。

我仍在使用 WinXP,所以 SetCurrentConsoleFontEx()对我来说不是一个选择。我找到了 this link其中描述了一些未记录的函数,包括 SetConsoleFont()。它们工作得很好:GetNumberOfConsoleFonts() 在我的系统上返回 9 种可用字体,我可以选择一些,但是在全屏下找到 0 种字体,这意味着它不受支持。

我还尝试创建程序的快捷方式并在那里设置控制台,但没有全屏选项,切换到全屏后所有字体设置都被丢弃。

我想说服屏幕显示漂亮的大字体,就像在科幻电影中或在良好的旧 BIOS 汇编代码中一样。 XP下可以吗?

最佳答案

全屏控制台模式将显示适配器切换到 80x25 VGA 文本模式。

因此字体渲染完全不同。在普通的控制台窗口中,字体是使用 GDI 呈现的;在全屏模式下,Windows 将字符代码写入显示缓冲区,然后硬件呈现字体。

VGA 支持可加载字体,Windows 使用此功能来支持其不同的语言版本。我不记得字体是否由 Windows 的语言版本修复,或者它是否选择匹配当前代码页。 (全屏模式在 x64 上不起作用,而且我手头没有 32 位系统无法尝试。)

我不知道您对使用的 VGA 字体有任何选择,尽管在 Fonts 目录中覆盖 VGA 字体可能需要一些努力。尽管显然这不是您想要在生产中做的事情。

最后,也许可以使用实际的 DOS 应用程序更改字体!我知道 Windows NT 会捕获一些与视频相关的 IO,并将它们传递给硬件。不过这没什么用。

关于c++ - 在全屏模式下设置控制台字体大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27218077/

相关文章:

c++ - 有哪些有用的技巧可以追踪 C++ 中随机发生的 C0000005 访问冲突?

c++ - 获取被遮挡窗口的图像内容

c++ - DLLNotFoundException异常

c++ - 在滚动条上跟踪鼠标事件

c++ - 如何将 Windows 资源管理器与 Windows 命令提示符同步?

css - Google 字体 (Lato) 无法在 Google Chrome 上呈现

css - 以数字形式应用 CSS 字体粗细?

python - 如何使用 pygame.font.Font() 在 pygame 中换行文本?

c++ - 调试 C 程序的断言错误

c++ - 找到更大和更小的数字