如何以编程方式将控制台字体设置为Raster Font?

在运行时,如何确保命令提示符的当前字体是默认的光栅字体? 我正在使用C ++与WinApi。

现在我已经使用GetConsoleFontEx();SetConsoleFontEx(); ,但我一直无法findCONSOLE_FONT_INFOEXFaceName属性的正确值。 我在网上find了一些字体设置为Lucida和/或Consolas的例子,但那不是我要找的。

这是我现在的代码片段:

 COORD fs = {8, 8}; CONSOLE_FONT_INFOEX cfie = {0}; cfie.cbSize = sizeof(cfie); GetCurrentConsoleFontEx(hOut, 0, &cfie); char fn[] = "Raster"; // Not really doing anything strcpy_s((char*)cfie.FaceName, 32, fn); // Not sure if this is right cfie.dwFontSize.X = fs.X; cfie.dwFontSize.Y = fs.Y; SetCurrentConsoleFontEx(hOut, 0, &cfie); 

我testing了SetCurrentConsoleFontEx()的返回值,它是非零的,表示调用成功。 虽然字体不会改变。

Solutions Collecting From Web of "如何以编程方式将控制台字体设置为Raster Font?"

调整SetCurrentConsoleFontEx()的MS示例 ,这似乎工作。 请注意,按下提示Enter时,整个控制台将更改字体。

 #include <windows.h> #include <stdio.h> #include <string.h> int main(int argc, char** args) { CONSOLE_FONT_INFOEX cfi; cfi.cbSize = sizeof cfi; cfi.nFont = 0; cfi.dwFontSize.X = 0; cfi.dwFontSize.Y = 20; cfi.FontFamily = FF_DONTCARE; cfi.FontWeight = FW_NORMAL; printf("A quick brown fox jumps over the lazy dog\n"); printf("Setting to Lucida Console: press <Enter> "); getchar(); wcscpy(cfi.FaceName, L"Lucida Console"); SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &cfi); printf("Setting to Consolas: press <Enter> "); getchar(); wcscpy(cfi.FaceName, L"Consolas"); SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &cfi); printf("Press <Enter> to exit"); getchar(); return 0; }