17.6.4 打印后的清除
由于在堆上创建了CPrintData对象,因此必须在使用完以后将它删除。这时要在函数OnEndPrinting()中添加下列代码:
- void CSketcherView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* pInfo)
- {
- // Delete our print data object
- delete static_cast<CPrintData*>(pInfo->m_lpUserData);
- }
在Sketcher程序中,只需要对这个函数做这么多工作,但是在有些情况下,还有其他一些工作要做。此处应当一次性地完成最终清除。确保从第二个形参名中删除注释分隔符(/* */);否则函数将不进行编译。也许您不需要在代码中引用这些参数名,所以默认的实现方式将使它们以注释的形式存在。由于使用了参数pInfo,因此必须解除对它的注释;否则编译器将把它报告为未定义。
在Sketcher程序中,不需要对OnBeginPrinting()函数添加任何代码,但是如果在整个打印过程中需要使用GDI资源(如钢笔),那么需要添加代码以分配这些资源。然后将它们删除,这是OnEndPrinting()函数中清除过程的一部分。