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 |