标准字体对象

容器提供的标准环境字体属性和控件提供的标准字体属性都提供标准字体对象。 也就是说,这些标准字体提供指向标准字体对象的 IDispatch 指针。

字体对象是基础 GDI 字体支持之上的一组接口的系统提供的实现。 根据给定的 FONTDESC 结构,通过 API 函数 OleCreateFontIndirect 创建字体对象。 该字体对象支持许多读/写属性,以及通过其接口 IFont的自定义方法,并通过 dispinterface IFontDisp支持相同的属性集(但不支持方法)。 dispinterface 用于前面提到的字体属性。 这些属性对应于 LOGFONT 结构中描述的 GDI 字体属性。

字体对象还支持传出接口 IPropertyNotifySink,以便客户端可以确定字体属性何时更改。 由于字体对象支持至少一个传出接口,因此它还实现 IConnectionPointContainer,并为 IPropertyNotifySink 实现此目的。

字体对象提供 hFont 属性,该属性是符合为字体指定的其他属性的 Windows 字体句柄。 字体对象在可能的情况下延迟实现此字体,因此连续设置字体的两个属性不会导致实现中间字体。 此外,作为优化,标准字体对象维护字体句柄的缓存。 同一进程中具有相同属性的两个字体对象将返回相同的字体句柄。 字体对象可以同时从此缓存中删除字体,这为使用此 hFont 属性的客户端引入了特殊注意事项。 有关详细信息,请参阅 IFont::get_hFont

字体对象还支持 IPersistStream,以便它可以从 IStream实例中保存和加载自身。 在内部使用字体对象的任何其他对象通常会保存并加载字体,作为对象自身持久性处理的一部分。

此外,该字体对象还支持 IDataObject,通过它提供一个属性集,其中包含每个字体属性的类型化值。

控件属性