根据the MSDN documentation,EnumFontFamiliesEx
函数的第一个参数描述如下:
hdc [in]
设备上下文的句柄,用于枚举字体。
答案 0 :(得分:2)
问题(3)是找到解释的合法困难的事情,但原因很简单:
某些设备提供自己的字体支持。例如,PostScript打印机将允许您使用PostScript字体。但是,这些相同的字体在屏幕上渲染时无法使用,或者在没有PostScript支持的情况下无法使用。另一个例子是绘图仪(电动笔)需要具有固定笔划粗细的矢量字体,因此光栅字体不能与这样的设备一起使用。
如果您对特定于设备的字体支持感兴趣,则需要了解GetDeviceCaps
功能。
答案 1 :(得分:1)
Microsoft还有其他关于设备上下文的文章,
http://msdn.microsoft.com/en-us/library/windows/desktop/dd183553(v=vs.85).aspx
应用程序必须通知GDI加载特定的设备驱动程序, 一旦驱动程序被加载,准备设备进行绘图 操作(例如选择线条颜色和宽度,画笔图案 和颜色,字体字体,剪裁区域等)。这些任务 通过创建和维护设备上下文(DC)来完成。一个 DC是一种定义一组图形对象及其图形的结构 关联的属性以及影响输出的图形模式。该 图形对象包括用于画线的笔,用于绘画的画笔 并填充,用于复制或滚动屏幕部分的位图,a 用于定义可用颜色集的调色板,用于定义可用颜色的区域 剪切和其他操作,以及绘画和绘图的路径 操作。与大多数结构不同,应用程序从未有过 直接进入DC;相反,它在结构上运作 通过调用各种函数间接地。
显然字体是一种绘图。
答案 2 :(得分:1)
Windows API广泛使用句柄的概念。句柄是一个整数值,您可以将其用作访问API资源的标记。你可以把它想象成一种“this”指针,虽然它绝对不是指针。
设备上下文是Windows API中的一个对象,表示可以在其上绘制或显示图形的内容。它可能是打印机,位图或屏幕,或创建图形有意义的其他上下文。在Windows中,必须先将字体选择到设备上下文中才能使用它们。为了找出任何给定设备上下文中当前可用的字体,您可以枚举它们。这就是EnumFontFamiliesEx的用武之地。