Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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.
Sintaksis
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
| 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
[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.
Mengembalikan nilai
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.
Komentar
Fungsi EnumFontFamiliesEx tidak menggunakan nama typeface bertag untuk mengidentifikasi set karakter. Sebaliknya, selalu meneruskan nama typeface yang benar dan nilai set karakter terpisah ke fungsi panggilan balik. Fungsi ini menghitung font berdasarkan nilai
Seperti 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 Miring mungkin hanya berisi karakter ANSI. Untuk alasan ini, sebaiknya jangan asumsikan bahwa font tertentu mencakup kumpulan karakter tertentu, bahkan jika itu adalah set karakter ANSI. Tabel berikut menunjukkan hasil berbagai kombinasi nilai untuk lfCharSet dan lfFaceName.
| Nilai | Arti |
|---|---|
|
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
Perhatikan, 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 memberatkan 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.
Nota
Header wingdi.h mendefinisikan EnumFontFamiliesEx sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta praprosesor 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
| Syarat | Nilai |
|---|---|
| klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
| server minimum yang didukung |
Windows 2000 Server [hanya aplikasi desktop] |
| Platform Target |
Windows |
| Header |
wingdi.h (termasuk Windows.h) |
| Pustaka |
Gdi32.lib |
| DLL |
Gdi32.dll |
Lihat juga
Fungsi Font dan Teks
LOGFONT