这段MSDN文档是什么意思?

时间:2013-05-15 04:50:37

标签: windows winapi msdn

根据the MSDN documentationEnumFontFamiliesEx函数的第一个参数描述如下:

  

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

  1. 究竟是什么意思?
  2. 设备上下文是什么意思?
  3. 为什么设备上下文与字体有关?

3 个答案:

答案 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的用武之地。