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
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
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
fonctions de police et de texte