Console: dimension et fonte

Description

Bonjour,

Les deux routines présentées ci-dessous vous aident à dimensionner la console (windows) et d'y choisir une fonte avec une taille donnée.

Le fichier "ConsoleSizeFont.cpp" contient un exemple complet qui vous montre comment utiliser ces codes en créant une "animation graphique" sur la console.

Pour afficher ou modifier la fonte (ou police) de la console:
Cliquez sur la bande de titre avec le bouton gauche de la souris > Propriétés > Police

Dimension de la console

La console est définie par un buffer de xBuf×yBuf caractères dont on en affiche xWin×yWin:
BOOL ConsoleSize(HANDLE hOut, int xWin, int yWin, int xBuf, int yBuf) {
  if (xBuf < xWin) xBuf = xWin; // xWin <= xBuf
  if (yBuf < yWin) yBuf = yWin; // yWin <= yBuf
  if (SetConsoleScreenBufferSize(hOut, {xBuf, yBuf}) == 0) return 0;
  SMALL_RECT r = {0, 0, xWin-1, yWin-1};
  return SetConsoleWindowInfo(hOut, 1, &r);
}
Attention: les arguments de dimension doivent être assez grands: voir SetConsoleScreenBufferSize function.

Fonte de la console

On choisira une fonte (ou police) à chasse fixe (monospace) telle que "Consolas" ou "Lucida Console".
BOOL ConsoleFont(HANDLE hOut, char *facename, int w, int h) {
  size_t n;
  CONSOLE_FONT_INFOEX fid = {sizeof(CONSOLE_FONT_INFOEX)};
  if (GetCurrentConsoleFontEx(hOut, FALSE, &fid) == 0) return 0;
  fid.FontFamily = FF_DONTCARE;
  mbstowcs_s(&n, fid.FaceName, facename, 32);
  fid.dwFontSize = {w, h};
  return SetCurrentConsoleFontEx(hOut, 0, &fid);
}

Test: couleurs "animées"

Le fichier ConsoleSizeFont.cpp du zip montre que les deux fonctions décrites, complétées de WriteConsoleOutputAttribute(...), permettent par exemple d'"animer" la console.
Chaque élément de couleur est formé de 2 caractères de dimension x×y où y=2*x, son apparence est donc carré.
L'augmentation la constante Dim augmente la dimension de la console.

Bonne lecture ...

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.