How do I make sure that the command prompt's current font is the default Raster Font, at runtime? I'm using C++ with WinApi.
For now I've used GetConsoleFontEx(); and SetConsoleFontEx();, but I haven't been able to find the right value for the CONSOLE_FONT_INFOEX's FaceName property. I found a few examples online where the font was set to Lucida and/or Consolas, but that's not what I'm looking for.
Here's a snippet of my current code:
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);
I have tested the return value of SetCurrentConsoleFontEx(), and it's non-zero, indicating a successful call. The font does not change, though.
Adapting the MS example of SetCurrentConsoleFontEx(), this seems to work. Note that when the cue Enter is pressed, the whole console changes font.
#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;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With