Condividi tramite


Funzione EnumFontFamiliesExA (wingdi.h)

La funzione EnumFontFamiliesEx enumera tutti i tipi di carattere denominati in modo univoco nel sistema che corrispondono alle caratteristiche del tipo di carattere specificate dalla struttura LOGFONT . EnumFontFamiliesEx enumera i tipi di carattere in base al nome del carattere tipografico, al set di caratteri o a entrambi.

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 EnumFontFamExProc.

[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 non usa nomi di carattere tipografico con tag per identificare i set di caratteri. Passa invece sempre il nome del carattere tipografico corretto e un valore set di caratteri separato alla funzione di callback. La funzione enumera i tipi di carattere in base ai valori dei membri lfCharSet e lfFaceName nella struttura LOGFONT.

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 ENUMLOGFONTEX include un campo script.

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

EnumFontFamExProc

EnumFontFamilies

EnumFonts

funzioni di tipo carattere e testo

panoramica tipi di carattere e testo

LOGFONT