更新时间:2022-02-21 18:21
EnumFontFamProc是由应用程序定义的与函数EnumFontFamilies一起使用的回调函数,它接收用于描述可用字体的数据。
类型FONTENUMPROC定义了一个指向此回调函数的指针,EnumFontFamProc是应用程序定义的函数的名字的占位符。
int CALLBACK EnumFontFamProc(ENUMLOGFONT FAR *lpelf, NEWTEXTMETRIC FAR *lpntm, int FontType, LPARAM lParam);
lpelf:指向结构ENUMLOGFONT的指针,该结构包含字体的逻辑属性。该结构是局部定义的。
lpntm:指向结构NEWTEXTMETRIC的指针,该结构包含TrueType字体的物理属性。如果该字体不是TrueType字体,此参数为指向结构TEXTMETRIC的指针。
FontType:指定字体的类型,此参数可以是下列值的组合:
DEVICE_FONTTYPE, RASTER_FONTTYPE, TRUETYPE_FONTTYPE。
lParam:指向由函数EnumFontFamilies传来的应用程序定义的数据的指针。
要继续列举,返回值必须是非零值;要停止列举,返回值必须为0。
应用程序必须将此回调函数的地址传给EnumFontFamilies以将函数注册。
RASTER_FONTTYPE, DEVICE_FONTTYPE和TRUETYPE_FONTTYPE等常数可用AND操作符连接起来决定字体的类型。如果RASTER_FONTTYPE位被设置,则该字体是一种光栅字体。如果TRUETYPE_FONTTYPE位被设置,该字体是一种TrueType字体。如果上述两位都未被设置,则该字体是一种向量字体。当一种设备(如激光打印机)支持下载TrueType字体或该字体是一种驻留设备的字体,则DEVICE_FONTTYPE位被设置,当设备是一种显示设备、点阵打印机或其他光栅设备,则该位为0。应用程序也可用DEVICE_FONTTYPE来区别图形设备接口(GDI)提供的光栅字体和设备提供的字体。GDI可以为GDI提供的光栅字体模拟粗体、斜体、下划线和删除线(strikeout)属性,但却不支持设备提供的字体。
Windows CE:字体的物理属性总是保存在TEXTMETRIC结构中。
Windows CE版本1.0不支持TrueType字体。在该版本中,参数FontType的值始终是RASTER_FONTTYPE。
在Windows CE版本2.0,FontType可依赖于Windows CE平台取值为RASTER_FONTTYPE或TRUETYPE_FONTTYPE,任何给定的Windows CE平台只支持光栅字体和TrueType字体其中之一,字体类型(光栅或TrueType)是在系统设计时选择的,应用程序不能修改。