Fungsi EnumFontFamiliesExA (wingdi.h)
Fungsi EnumFontFamiliesEx menghitung semua font bernama unik dalam sistem yang cocok dengan karakteristik font yang ditentukan oleh struktur LOGFONT . EnumFontFamiliesEx menghitung font berdasarkan nama typeface, set karakter, atau keduanya.
Sintaks
int EnumFontFamiliesExA(
[in] HDC hdc,
[in] LPLOGFONTA lpLogfont,
[in] FONTENUMPROCA lpProc,
[in] LPARAM lParam,
DWORD dwFlags
);
Parameter
[in] hdc
Handel ke konteks perangkat untuk menghitung font.
[in] lpLogfont
Penunjuk ke struktur LOGFONT yang berisi informasi tentang font yang akan dijumlahkan. Fungsi ini memeriksa anggota berikut.
Anggota | Deskripsi |
---|---|
lfCharSet | Jika diatur ke DEFAULT_CHARSET, fungsi menghitung semua font bernama unik di semua set karakter. (Jika ada dua font dengan nama yang sama, hanya satu yang dijumlahkan.) Jika diatur ke nilai set karakter yang valid, fungsi hanya menghitung font dalam kumpulan karakter yang ditentukan. |
lfFaceName | Jika diatur ke string kosong, fungsi menghitung satu font di setiap nama typeface yang tersedia. Jika diatur ke nama typeface yang valid, fungsi menghitung semua font dengan nama yang ditentukan. |
lfPitchAndFamily | Harus diatur ke nol untuk semua versi bahasa sistem operasi. |
[in] lpProc
Penunjuk ke fungsi panggilan balik yang ditentukan aplikasi. Untuk informasi selengkapnya, lihat fungsi EnumFontFamExProc .
[in] lParam
Nilai yang ditentukan aplikasi. Fungsi meneruskan nilai ini ke fungsi panggilan balik bersama dengan informasi font.
dwFlags
Parameter ini tidak digunakan dan harus nol.
Nilai kembali
Nilai yang dikembalikan adalah nilai terakhir yang dikembalikan oleh fungsi panggilan balik. Nilai ini tergantung pada keluarga font mana yang tersedia untuk perangkat yang ditentukan.
Keterangan
Fungsi EnumFontFamiliesEx tidak menggunakan nama typeface yang diberi tag untuk mengidentifikasi set karakter. Sebaliknya, ia selalu meneruskan nama typeface yang benar dan nilai set karakter terpisah ke fungsi panggilan balik. Fungsi menghitung font berdasarkan nilai anggota lfCharSet dan lfFaceName dalam struktur LOGFONT .
Seperti halnya EnumFontFamilies, EnumFontFamiliesEx menghitung semua gaya font. Tidak semua gaya font menutupi kumpulan karakter yang sama. Misalnya, Fontorama Bold mungkin berisi karakter ANSI, Yunani, dan Sirilik, tetapi Fontorama Italic mungkin hanya berisi karakter ANSI. Untuk alasan ini, sebaiknya jangan berasumsi bahwa font tertentu mencakup kumpulan karakter tertentu, bahkan jika itu adalah set karakter ANSI. Tabel berikut ini memperlihatkan hasil berbagai kombinasi nilai untuk lfCharSet dan lfFaceName.
Nilai | Makna |
---|---|
lfCharSet = DEFAULT_CHARSET lfFaceName = '\0' |
Menghitung semua font bernama unik dalam semua set karakter. Jika ada dua font dengan nama yang sama, hanya satu yang dijumlahkan. |
lfCharSet = DEFAULT_CHARSET lfFaceName = font tertentu |
Menghitung semua kumpulan karakter dan gaya dalam font tertentu. |
lfCharSet =set karakter tertentu lfFaceName = '\0' |
Menghitung semua gaya semua font dalam kumpulan karakter tertentu. |
lfCharSet =set karakter tertentu lfFaceName = font tertentu |
Menghitung semua gaya font dalam kumpulan karakter tertentu. |
Sampel kode berikut menunjukkan bagaimana nilai-nilai ini digunakan.
// 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;
Fungsi panggilan balik untuk EnumFontFamilies dan EnumFontFamiliesEx sangat mirip. Perbedaan utamanya adalah struktur ENUMLOGFONTEX menyertakan bidang skrip.
Catatan, berdasarkan nilai lfCharSet dan lfFaceName, EnumFontFamiliesEx akan menghitung font yang sama sebanyak ada set karakter yang berbeda dalam font. Ini dapat membuat daftar font yang luas yang dapat membebani pengguna. Misalnya, font Century Schoolbook dapat muncul untuk set karakter Baltik, Barat, Yunani, Turki, dan Sirilik. Untuk menghindari hal ini, aplikasi harus memfilter daftar font.
Font untuk banyak bahasa Asia Timur memiliki dua nama typeface: nama bahasa Inggris dan nama yang dilokalkan. EnumFonts, EnumFontFamilies, dan EnumFontFamiliesEx mengembalikan nama typeface bahasa Inggris jika lokal sistem tidak cocok dengan bahasa font.
Ketika mode grafik pada konteks perangkat diatur ke GM_ADVANCED menggunakan fungsi SetGraphicsMode dan bendera DEVICE_FONTTYPE diteruskan ke parameter FontType, fungsi ini mengembalikan daftar font tipe 1 dan OpenType pada sistem. Ketika mode grafik tidak diatur ke GM_ADVANCED, fungsi ini mengembalikan daftar font tipe 1, OpenType, dan TrueType pada sistem.
Catatan
Header wingdi.h mendefinisikan EnumFontFamiliesEx sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta praprosem UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | wingdi.h (sertakan Windows.h) |
Pustaka | Gdi32.lib |
DLL | Gdi32.dll |