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, 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 al contesto del 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 tipo disponibile. Se impostato su un nome tipoface 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 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 callback. Questo valore dipende dalle famiglie di caratteri disponibili per il dispositivo specificato.

Commenti

La funzione EnumFontFamiliesEx non usa nomi di caratteri contrassegnati per identificare i set di caratteri. Passa invece sempre il nome del carattere di tipo 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 con EnumFontFamilies, EnumFontFamiliesEx enumera tutti gli stili di carattere. Non tutti gli stili di un 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 è il set di caratteri ANSI. La tabella seguente mostra 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, viene enumerato solo uno.
lfCharSet = DEFAULT_CHARSET

lfFaceName = un 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 carattere specifico

Enumera tutti gli stili di un 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.

Nota, 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 carattere Century Schoolbook può essere visualizzato per i set di caratteri baltici, occidentali, greci, turchi e cirillici. Per evitare questo problema, un'applicazione deve filtrare l'elenco dei tipi di carattere.

I tipi di carattere per molte lingue asiatiche orientali hanno due nomi tipizzati: un nome inglese e un nome localizzato. EnumFonts,EnumFontFamilies e EnumFontFamiliesEx restituiscono il nome del carattere di tipo inglese se le impostazioni locali del sistema non corrispondono alla lingua del tipo di carattere.

Quando la modalità grafica nel contesto del dispositivo è impostata su GM_ADVANCED usando la funzione SetGraphicsMode e il flag di DEVICE_FONTTYPE viene passato al parametro FontType, questa funzione restituisce un elenco di tipi 1 e tipi di carattere OpenType nel sistema. Quando la modalità grafica non è impostata su GM_ADVANCED, questa funzione restituisce un elenco di tipi 1, OpenType e tipi di carattere 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 preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione wingdi.h (include Windows.h)
Libreria Gdi32.lib
DLL Gdi32.dll

Vedi anche

EnumFontFamExProc

EnumFontFamilies

EnumFonts

Funzioni carattere e testo

Panoramica dei tipi di carattere e del testo

LOGFONT