Partager via


Fonction EnumFontFamiliesExA (wingdi.h)

La fonction EnumFontFamiliesEx énumère toutes les polices nommées de manière unique dans le système qui correspondent aux caractéristiques de police spécifiées par la structure LOGFONT. EnumFontFamiliesEx énumère les polices en fonction du nom de la police, du jeu de caractères ou des deux.

Syntaxe

int EnumFontFamiliesExA(
  [in] HDC           hdc,
  [in] LPLOGFONTA    lpLogfont,
  [in] FONTENUMPROCA lpProc,
  [in] LPARAM        lParam,
       DWORD         dwFlags
);

Paramètres

[in] hdc

Handle vers le contexte de l’appareil à partir duquel énumérer les polices.

[in] lpLogfont

Pointeur vers une structure LOGFONT qui contient des informations sur les polices à énumérer. La fonction examine les membres suivants.

Membre Description
lfCharSet Si elle est définie sur DEFAULT_CHARSET, la fonction énumère toutes les polices nommées de manière unique dans tous les jeux de caractères. (S’il existe deux polices portant le même nom, une seule est énumérée.) Si elle est définie sur une valeur de jeu de caractères valide, la fonction énumère uniquement les polices du jeu de caractères spécifié.
lfFaceName Si elle est définie sur une chaîne vide, la fonction énumère une police dans chaque nom de police disponible. Si elle est définie sur un nom de police valide, la fonction énumère toutes les polices portant le nom spécifié.
lfPitchAndFamily Doit être défini sur zéro pour toutes les versions linguistiques du système d’exploitation.

[in] lpProc

Pointeur vers la fonction de rappel définie par l’application. Pour plus d’informations, consultez la fonction EnumFontFamExProc .

[in] lParam

Valeur définie par l’application. La fonction transmet cette valeur à la fonction de rappel ainsi qu’aux informations de police.

dwFlags

Ce paramètre n’est pas utilisé et doit être égal à zéro.

Valeur de retour

La valeur de retour est la dernière valeur retournée par la fonction de rappel. Cette valeur dépend des familles de polices disponibles pour l’appareil spécifié.

Remarques

La fonction EnumFontFamiliesEx n’utilise pas de noms de police étiquetés pour identifier les jeux de caractères. Au lieu de cela, il transmet toujours le nom de police correct et une valeur de jeu de caractères distincte à la fonction de rappel. La fonction énumère les polices en fonction des valeurs des membres lfCharSet et lfFaceName dans la structure LOGFONT.

Comme avec EnumFontFamilies, EnumFontFamiliesEx énumère tous les styles de police. Tous les styles d’une police ne couvrent pas les mêmes jeux de caractères. Par exemple, Fontorama Bold peut contenir des caractères ANSI, Grec et Cyrillique, mais Fontorama Italic peut contenir uniquement des caractères ANSI. Pour cette raison, il est préférable de ne pas supposer qu’une police spécifiée couvre un jeu de caractères spécifique, même s’il s’agit du jeu de caractères ANSI. Le tableau suivant présente les résultats de différentes combinaisons de valeurs pour lfCharSet et lfFaceName.

Valeurs Signification
lfCharSet = DEFAULT_CHARSET

lfFaceName = '\0'

Énumère toutes les polices nommées de manière unique dans tous les jeux de caractères. S’il existe deux polices portant le même nom, une seule est énumérée.
lfCharSet = DEFAULT_CHARSET

lfFaceName = une police spécifique

Énumère tous les jeux de caractères et styles dans une police spécifique.
lfCharSet =un jeu de caractères spécifique

lfFaceName = '\0'

Énumère tous les styles de toutes les polices du jeu de caractères spécifique.
lfCharSet =un jeu de caractères spécifique

lfFaceName = une police spécifique

Énumère tous les styles d’une police dans un jeu de caractères spécifique.
 

L’exemple de code suivant montre comment ces valeurs sont utilisées.


// To enumerate all styles and charsets of all fonts: 
lf.lfFaceName[0] = '\0';
lf.lfCharSet = DEFAULT_CHARSET;
HRESULT hr;

// To enumerate all styles and character sets of the Arial font: 
hr = StringCchCopy( (LPSTR)lf.lfFaceName, LF_FACESIZE, "Arial" );
if (FAILED(hr))
{
// TODO: write error handler 
}

lf.lfCharSet = DEFAULT_CHARSET;


// To enumerate all styles of all fonts for the ANSI character set 
lf.lfFaceName[0] = '\0';
lf.lfCharSet = ANSI_CHARSET;

// To enumerate all styles of Arial font that cover the ANSI charset 
hr = StringCchCopy( (LPSTR)lf.lfFaceName, LF_FACESIZE, "Arial" );
if (FAILED(hr))
{
// TODO: write error handler 
}

lf.lfCharSet = ANSI_CHARSET;

Les fonctions de rappel pour EnumFontFamilies et EnumFontFamiliesEx sont très similaires. La principale différence est que la structure ENUMLOGFONTEX inclut un champ de script.

Notez que, en fonction des valeurs de lfCharSet et lfFaceName, EnumFontFamiliesEx énumère la même police que plusieurs fois qu’il existe des jeux de caractères distincts dans la police. Cela peut créer une liste complète de polices qui peuvent être fastidieuses pour un utilisateur. Par exemple, la police du livre scolaire century peut apparaître pour les jeux de caractères baltiques, occidentaux, grecs, turcs et cyrilliques. Pour éviter cela, une application doit filtrer la liste des polices.

Les polices pour de nombreuses langues d’Asie de l’Est ont deux noms de police : un nom anglais et un nom localisé. EnumFonts, EnumFontFamilieset EnumFontFamiliesEx renvoyer le nom de la police anglaise si les paramètres régionaux système ne correspondent pas à la langue de la police.

Lorsque le mode graphique sur le contexte de l’appareil est défini sur GM_ADVANCED à l’aide de la fonction SetGraphicsMode et que l’indicateur DEVICE_FONTTYPE est passé au paramètre FontType, cette fonction retourne une liste de polices de type 1 et OpenType sur le système. Lorsque le mode graphique n’est pas défini sur GM_ADVANCED, cette fonction retourne une liste de polices de type 1, OpenType et TrueType sur le système.

Note

L’en-tête wingdi.h définit EnumFontFamiliesEx comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Exigences

Exigence Valeur
client minimum pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
serveur minimum pris en charge Windows 2000 Server [applications de bureau uniquement]
plateforme cible Windows
d’en-tête wingdi.h (include Windows.h)
bibliothèque Gdi32.lib
DLL Gdi32.dll

Voir aussi

EnumFontFamExProc

EnumFontFamilies

EnumFonts

fonctions de police et de texte

Vue d’ensemble des polices et du texte

LOGFONT