MSDN文档的这一部分是什么意思?

问题描述 投票:0回答:3

根据EnumFontFamiliesExthe MSDN documentation功能的第一个参数描述为:

hdc [in]用于从中枚举字体的设备上下文的句柄。

  1. 这到底是什么意思?
  2. 设备上下文是什么意思?
  3. 为什么设备上下文与字体相关?
windows winapi msdn
3个回答
2
投票

问题(3)很难找到解释,但是原因很简单:

某些设备提供自己的字体支持。例如,一台PostScript打印机将允许您使用PostScript字体。但是,当在屏幕上渲染时,或在没有PostScript支持的其他打印机上,这些相同的字体将不可用。另一个示例是绘图仪(这是一支电动笔)需要具有固定笔触粗细的矢量字体,因此光栅字体不能用于此类设备。

如果您对特定于设备的字体支持感兴趣,则需要了解GetDeviceCaps函数。


1
投票

Windows API广泛使用句柄的概念。句柄是一个整数值,您可以将其用作令牌来访问API资源。您可以将它视为一种“ this”指针,尽管它绝对不是指针。

设备上下文是Windows API中的一个对象,表示可以在其上绘制或显示图形的对象。它可能是打印机,位图或屏幕,或者在其他有意义的情况下创建图形的上下文。在Windows中,必须先在设备上下文中选择字体,然后才能使用它们。为了找出在任何给定的设备上下文中当前可用的字体,您可以枚举它们。这就是EnumFontFamiliesEx出现的地方。


1
投票

Microsoft还有关于设备上下文的其他文章,

GetDeviceCaps

应用程序必须通知GDI加载特定的设备驱动程序,并且,驱动程序加载后,准备绘制设备操作(例如选择线条的颜色和宽度,画笔图案和颜色,字体,剪裁区域等)。这些任务通过创建和维护设备上下文(DC)来完成。一种DC是定义一组图形对象及其对象的结构。关联的属性以及影响输出的图形模式。的图形对象包括用于绘制线条的笔,用于绘制的画笔并填充位图以复制或滚动屏幕的一部分,用于定义可用颜色集的调色板,剪裁和其他操作,以及绘画路径操作。与大多数结构不同,应用程序从来没有直接访问DC;相反,它在结构上运行通过调用各种函数间接地。

显然字体是一种绘图。

© www.soinside.com 2019 - 2024. All rights reserved.