我使用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/