EnumFontFamiliesExA, fonction (wingdi.h)
La fonction EnumFontFamiliesEx énumère toutes les polices nommées de façon 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 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 du contexte d’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 la valeur est 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 dans le 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 avec 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 que les informations de police.
dwFlags
Ce paramètre n’est pas utilisé et doit être égal à zéro.
Valeur retournée
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 balisé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, grecs et cyrilliques, 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 montre 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 dans le 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 main 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 autant de fois qu’il existe des jeux de caractères distincts dans la police. Cela peut créer une liste complète de polices qui peut être fastidieuse pour un utilisateur. Par exemple, la police Century Schoolbook peut apparaître pour les jeux de caractères baltes, occidentaux, grecs, turcs et cyrilliques. Pour éviter cela, une application doit filtrer la liste des polices.
Les polices de nombreuses langues d’Asie de l’Est ont deux noms de police : un nom anglais et un nom localisé. EnumFonts, EnumFontFamilies et EnumFontFamiliesEx renvoient le nom de police anglais 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.
Notes
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. La combinaison 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.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | wingdi.h (inclure Windows.h) |
Bibliothèque | Gdi32.lib |
DLL | Gdi32.dll |
Voir aussi
Fonctions de police et de texte