捐助郴维网
感谢您对郴维网的支持,你的支持将是郴维网持续发展的动力!
二维码
×
当前位置:郴维网 >API档案 > 正文
3 2017.06

EnumFontFamiliesEx

点击次数:1340 更新时间:2017-6-3 21:36:11  【打印此页

原文链接 -> 传送门

函数功能:

EnumFontFamiliesEx 函数用于枚举系统里所有符合由 LOGFONT 结构指定的字体特性的唯一命名的字体。EnumFontFamiliesEx 函数基于字样名或字符集或两者来枚举字体。


API 函数原型:

注释:_In_ 说明该参数是输入的。

int EnumFontFamiliesEx(
  _In_ HDC          hdc,
  _In_ LPLOGFONT    lpLogfont,
  _In_ FONTENUMPROC lpEnumFontFamExProc,
  _In_ LPARAM       lParam,
       DWORD        dwFlags
);



参数解析:

参数

含义

hdc

指定从中枚举字体的设备环境句柄

lpLogfont

指向包含关于枚举的字体的信息的 LOGFONT 结构的指针。函数检查以下成员:

成员

描述

lfCharSet

如果设置为 DEFAULT_CHARSET,此函数列举所有字符集里的所有唯一命名的字体。(如果存在具有相同名称的两种字体,只有一个被列举)。如果设置了一个合法字符集值,此函数列举指定字符集里的字体

lfFaceName

如果设置为空串,此函数列举每一个可用字样名的一种字体。如果设置了一个指定的字样名,此函数列举指定名字的所有字体

lfPitchAndFamily

对于操作系统的所有语言版本,此值必须设置为 0

lpEnumFontFamExProc

指向应用程序自定义的回调函数的指针。更多信息,查看 EnumFontFamProc 函数

lParam

指向应用程序供给的数据的指针,该数据和字体信息一起传给回调函数

dwFlags

此参数未被使用,必须为 0



返回值:

返回值是由回调函数返回的最后一个值,此值依赖于指定设备的可能的字体族。


备注:

1. EnumFontFamiliesEx 函数不使用带标记的字样名来标识字符集,相反,总是传递正确的字样名和单独的字符集值给回调函数,此函数基于 LOGFONT 结构里的 lfCharset 和 lfFacename 值来枚举字体。

2. 与 EnumFontFamilies 函数一样,EnumFontFamiliesEx 函数枚举所有的字体样式。并不是一种字体覆盖相同的字符集的所有的字体样式。例如,Fontorama Bold 可能包含 ANSI、 希腊语和西里尔字母字符集,但 Fontorama Italic 可能只包含 ANSI 字符集。为此,最好不要假定一种指定的字体涵盖特定的字符集,即使它是 ANSI 字符集。下表显示 lfCharSet 和 lfFaceName 的值的各种组合的结果:

含义

lfCharSet = DEFAULT_CHARSET
lfFaceName = '\0'

枚举所有字符集内的所有唯一命名字体。如果存在具有相同名称的两种字体,只有一个被枚举

lfCharSet = DEFAULT_CHARSET
lfFaceName = a specific font

枚举所有字符集和特定字体的样式

lfCharSet =a specific character set
lfFaceName = '\0'

枚举指定字符集中的所有字体的所有样式

lfCharSet =a specific character set
lfFaceName = a specific font

枚举一个指定字符集中的一种字体的所有样式


3. 下面的示例代码显示了怎样使用这些值:

// 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;


4. EnumFontFamilies 函数和 EnumFontFamiliesEx 函数的回调函数是非常相似的。主要的区别是,ENUMLOGFONTEX 结构包括一个脚本字段。

5. 注意:基于 lfCharSet 和 lfFaceName 的值,EnumFontFamiliesEx 函数将枚举字体中相同的字体的次数和互不相同的字符集的数量相同。这可以创建广泛的字体列表,这对于用户来说是难以负担的。例如,Century Schoolbook 字体可以显示 Baltic、Western、Greek、Turkish 和 Cyrillic 字符集。要避免这种情况,应用程序应筛选字体的列表。

6. 对于许多东亚语言字体有两个字体名称︰ 英文名称和本地化的名称。如果系统区域设置与字体的语言不匹配,EnumFonts、 EnumFontFamilies 和 EnumFontFamiliesEx 函数返回英文字体名称。

7. 当使用 SetGraphicsMode 函数将设备环境的图形模式设置为 GM_ADVANCED ,且DEVICE_FONTTYPE 标志传递给 FontType 参数时,此函数返回类型 1 和系统上的 OpenType 字体。当图形模式未设置为 GM_ADVANCED 时,此函数返回一个列表的类型 1、 系统上的 OpenType 和 TrueType 字体。


需求:

Minimum supported client

Windows 2000 专业版 [仅桌面应用程序]

Minimum supported server

Windows 2000 服务器版 [仅桌面应用程序]

Header

Wingdi.h (包含于 Windows.h)

Library

Gdi32.lib

DLL

Gdi32.dll

Unicode and ANSI names

EnumFontFamiliesExW (Unicode) 和 EnumFontFamiliesExA (ANSI)



 

提示
郴维网为您提供各类专业服务:
软件开发,电脑配件销售,WIFI路由器销售,上门电脑维修,上门安装系统,系统安装,软、硬件安装,电脑除尘清灰,显示器维修,WIFI安装调试,服务器维护,数据恢复,密码破解,网络布线,网络检修,打印机维修,打印机加碳粉,苹果电脑安装系统,苹果电脑安装双系统,监控安装维护,电脑外包,笔记本电脑维修,餐饮、美容行业软件安装 等。。。。。。
点击次数:1340 更新时间:2017-6-3 21:36:11  【打印此页

上一条:ExtTextOut

下一条:EnumFontsProc

关键词推荐:郴州电脑城 郴州电脑维修公司 维修电脑公司 郴州软件开发 上门电脑维修 上门安装系统 笔记本电脑维修 郴州打印机维修 打印机加碳粉 电脑安装双系统 苹果电脑双系统 液晶显示器维修 联想笔记本维修 联想笔记本维修电话 戴尔笔记本维修电话 郴州戴尔笔记本维修 戴尔笔记本郴州维修点 华硕笔记本维修点 郴州华硕笔记本维修 郴州笔记本上网维修