Funzione EnumFontFamiliesExA (wingdi.h)
La funzione EnumFontFamiliesEx
Sintassi
int EnumFontFamiliesExA(
[in] HDC hdc,
[in] LPLOGFONTA lpLogfont,
[in] FONTENUMPROCA lpProc,
[in] LPARAM lParam,
DWORD dwFlags
);
Parametri
[in] hdc
Handle per il contesto di dispositivo da cui enumerare i tipi di carattere.
[in] lpLogfont
Puntatore a una struttura LOGFONT che contiene informazioni sui tipi di carattere da enumerare. La funzione esamina i membri seguenti.
Membro | Descrizione |
---|---|
lfCharSet | Se impostato su DEFAULT_CHARSET, la funzione enumera tutti i tipi di carattere denominati in modo univoco in tutti i set di caratteri. Se sono presenti due tipi di carattere con lo stesso nome, ne viene enumerata una sola. Se impostato su un valore di set di caratteri valido, la funzione enumera solo i tipi di carattere nel set di caratteri specificato. |
lfFaceName | Se impostato su una stringa vuota, la funzione enumera un tipo di carattere in ogni nome di carattere tipografico disponibile. Se è impostato su un nome di carattere tipografico valido, la funzione enumera tutti i tipi di carattere con il nome specificato. |
lfPitchAndFamily | Deve essere impostato su zero per tutte le versioni della lingua del sistema operativo. |
[in] lpProc
Puntatore alla funzione di callback definita dall'applicazione. Per altre informazioni, vedere la funzione
[in] lParam
Valore definito dall'applicazione. La funzione passa questo valore alla funzione di callback insieme alle informazioni sul tipo di carattere.
dwFlags
Questo parametro non viene usato e deve essere zero.
Valore restituito
Il valore restituito è l'ultimo valore restituito dalla funzione di callback. Questo valore dipende dalle famiglie di caratteri disponibili per il dispositivo specificato.
Osservazioni
La funzione EnumFontFamiliesEx
Come per EnumFontFamilies, EnumFontFamiliesEx enumera tutti gli stili di carattere. Non tutti gli stili di un tipo di carattere coprono gli stessi set di caratteri. Ad esempio, Fontorama Bold potrebbe contenere caratteri ANSI, greco e cirillico, ma Fontorama Italic potrebbe contenere solo caratteri ANSI. Per questo motivo, è consigliabile non presupporre che un tipo di carattere specificato copre un set di caratteri specifico, anche se si tratta del set di caratteri ANSI. Nella tabella seguente vengono illustrati i risultati di varie combinazioni di valori per lfCharSet e lfFaceName.
Valori | Significato |
---|---|
lfCharSet = DEFAULT_CHARSET lfFaceName = '\0' |
Enumera tutti i tipi di carattere denominati in modo univoco all'interno di tutti i set di caratteri. Se sono presenti due tipi di carattere con lo stesso nome, ne viene enumerata una sola. |
lfCharSet = DEFAULT_CHARSET lfFaceName = un tipo di carattere specifico |
Enumera tutti i set di caratteri e gli stili in un tipo di carattere specifico. |
lfCharSet =un set di caratteri specifico lfFaceName = '\0' |
Enumera tutti gli stili di tutti i tipi di carattere nel set di caratteri specifico. |
lfCharSet =un set di caratteri specifico lfFaceName = un tipo di carattere specifico |
Enumera tutti gli stili di un tipo di carattere in un set di caratteri specifico. |
Nell'esempio di codice seguente viene illustrato come vengono usati questi valori.
// 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;
Le funzioni di callback per EnumFontFamilies e EnumFontFamiliesEx sono molto simili. La differenza principale è che la struttura
Si noti che, in base ai valori di lfCharSet e lfFaceName, EnumFontFamiliesEx enumererà lo stesso tipo di carattere quante volte sono presenti set di caratteri distinti nel tipo di carattere. Questo può creare un elenco completo di tipi di carattere che possono essere onerosi per un utente. Ad esempio, il tipo di carattere Century Schoolbook può essere visualizzato per i set di caratteri Baltic, Western, Greco, Turco e Cirillico. Per evitare questo problema, un'applicazione deve filtrare l'elenco dei tipi di carattere.
I tipi di carattere per molte lingue dell'Asia orientale hanno due nomi di carattere tipografico: un nome inglese e un nome localizzato. EnumFonts, EnumFontFamiliese EnumFontFamiliesEx restituiscono il nome del carattere tipografico inglese se le impostazioni locali di sistema non corrispondono alla lingua del tipo di carattere.
Quando la modalità grafica nel contesto di dispositivo è impostata su GM_ADVANCED utilizzando la funzione SetGraphicsMode e il flag DEVICE_FONTTYPE viene passato al parametro FontType, questa funzione restituisce un elenco di tipi di carattere di tipo 1 e OpenType nel sistema. Quando la modalità grafica non è impostata su GM_ADVANCED, questa funzione restituisce un elenco di tipi di carattere di tipo 1, OpenType e TrueType nel sistema.
Nota
L'intestazione wingdi.h definisce EnumFontFamiliesEx come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 2000 Professional [solo app desktop] |
server minimo supportato | Windows 2000 Server [solo app desktop] |
piattaforma di destinazione | Finestre |
intestazione |
wingdi.h (include Windows.h) |
libreria |
Gdi32.lib |
dll | Gdi32.dll |
Vedere anche
funzioni di tipo carattere e testo
panoramica tipi di carattere e testo