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

Lihat juga

EnumFontFamExProc

EnumFontFamilies

EnumFonts

Fungsi Font dan Teks

Gambaran Umum Font dan Teks

LOGFONT