Caractéristiques police de caractères : taille, largeur des caractères [Résolu]

lectpe 163 Messages postés lundi 12 novembre 2007Date d'inscription 17 juillet 2010 Dernière intervention - 21 nov. 2009 à 18:11 - Dernière réponse : lectpe 163 Messages postés lundi 12 novembre 2007Date d'inscription 17 juillet 2010 Dernière intervention
- 22 nov. 2009 à 13:07
Bonjour à tous.

L'application que je suis en-train de réaliser doit pouvoir gérer le changement de la police d'écriture.

J'ai utilisé EnumFonts pour lister les polices de caractères dans une combobox et à côté, je veux mettre dans une deuxième combobox la liste des tailles possibles pour la police de caractères sélectionnée dans la première combobox.

Par exemple, pour la police de caractères "Courier New", les tailles possibles sont de 7 à 30 au moins et pour "Terminal", les tailles possibles sont : 4, 6, 9, 12 et 14.

On peut également sélectionner des polices suivant une liste donnée suivant si tous les caractères ont la même largeur (désolé, je sais que ça porte un nom particulier, mais je l'ai oublié...).

J'aimerais alors comment obtenir les caractéristiques d'une police de caractères comme les différentes tailles possibles et si elle a des caractères ayant tous la même largeur.

En attendant votre aide, je vous remercie d'avance.

Greg.
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention - 22 nov. 2009 à 11:32
3
Merci
Salut,

Pour les tailles de font disponibles, je ne sais pas.
Pour le fait que la police est oui ou non à largeur fixe, il faut regarder lfPitchAndFamily de LOGFONT.

Dans le code suivant, en plus d'afficher le pitch, je liste les lfFaceName puis les font associés à ces lfFaceName, sans que ça serve vraiment...

#include <windows.h>
#include <stdio.h>

int CALLBACK EnumFontInfoCallBack(ENUMLOGFONTEX* lpelfe, NEWTEXTMETRICEX* lpntme, DWORD FontType, LPARAM lParam)
{
  printf("  %s\n", lpelfe->elfLogFont.lfFaceName);
  
  return TRUE;
}

int CALLBACK EnumFontCallBack(ENUMLOGFONTEX* lpelfe, NEWTEXTMETRICEX* lpntme, DWORD FontType, LPARAM lParam)
{
  LOGFONT enumeratedFont;

  printf("%s", lpelfe->elfLogFont.lfFaceName);
  if (lpelfe->elfLogFont.lfPitchAndFamily & FIXED_PITCH)
    printf(" (Fixed pitch)\n");
  else
    printf(" (Variable pitch)\n");

  ZeroMemory(&enumeratedFont, sizeof(enumeratedFont));
  lstrcpy(enumeratedFont.lfFaceName, lpelfe->elfLogFont.lfFaceName);
  EnumFontFamiliesEx((HDC)lParam, &enumeratedFont, (FONTENUMPROC)EnumFontInfoCallBack, 0, 0);

  return TRUE;
}

int main()
{
  HDC hDesktopDC;
  LOGFONT enumeratedFont;

  hDesktopDC = GetDC(NULL);

  ZeroMemory(&enumeratedFont, sizeof(enumeratedFont));
  EnumFontFamiliesEx(hDesktopDC, &enumeratedFont, (FONTENUMPROC)EnumFontCallBack, (LPARAM)hDesktopDC, 0);

  ReleaseDC(NULL, hDesktopDC);
  return 0;
}

Merci cs_rt15 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 82 internautes ce mois-ci

Commenter la réponse de cs_rt15
lectpe 163 Messages postés lundi 12 novembre 2007Date d'inscription 17 juillet 2010 Dernière intervention - 21 nov. 2009 à 18:12
0
Merci
(Encore désolé, j'ai fais une grosse faute de frappe :

Je voulais dire que j'aimerais SAVOIR comment...
Commenter la réponse de lectpe
lectpe 163 Messages postés lundi 12 novembre 2007Date d'inscription 17 juillet 2010 Dernière intervention - 22 nov. 2009 à 13:07
0
Merci
Salut et merci encore rt15.
Commenter la réponse de lectpe

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.