分配 GDI 资源

此文章介绍了如何分配和解除分配打印所需的 Windows 图形设备接口 (GDI) 对象。

注意

有关详细信息,请参阅 GDI+ SDK 文档

假设你需要使用某些字体、画笔或其他 GDI 对象进行打印,而不是用于屏幕显示。 由于它们需要的内存,因此当应用程序启动时,分配这些对象的效率将比较低。 当应用程序没有打印文档时,该内存可能需要用于其他目的。 更好的做法是:开始打印时,将它们分配;打印结束时,将它们删除。

若要分配这些 GDI 对象,请重写 OnBeginPrinting 成员函数。 此函数非常适合此目的,有两个原因:在每次打印作业开始时,框架会调用此函数一次,并且与 OnPreparePrinting 不同,此函数有权访问表示打印机设备驱动程序的 CDC 对象。 可通过在视图类中定义指向 GDI 对象的成员变量(例如,CFont * 成员等等)来存储这些对象以便在打印作业期间使用。

若要使用已创建的 GDI 对象,在 OnPrint 成员函数中将它们选入打印机设备上下文中。 如果需要不同的 GDI 对象用于文档的不同页面,你可以检查 CPrintInfo 结构的 m_nCurPage 成员,并相应地选择 GDI 对象。 如果你需要一个 GDI 对象用于几个连续的页面,Windows 要求每次调用 OnPrint 时,将它选入设备上下文中。

若要释放这些 GDI 对象,请重写 OnEndPrinting 成员函数。 在每个打印作业结束时,框架会调用此函数,为你提供机会在应用程序返回到其他任务之前,释放特定于打印的 GDI 对象。

另请参阅

打印
如何执行默认打印