在VC对话框中实现打印和打印预览

在VC对话框中实现打印和打印预览

ID:47135954

大小:45.00 KB

页数:7页

时间:2019-08-10

在VC对话框中实现打印和打印预览_第1页
在VC对话框中实现打印和打印预览_第2页
在VC对话框中实现打印和打印预览_第3页
在VC对话框中实现打印和打印预览_第4页
在VC对话框中实现打印和打印预览_第5页
资源描述:

《在VC对话框中实现打印和打印预览》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、在VC对话框中实现打印和打印预览(附实现步骤) 时间:2008-01-27 作者:佚名   在一般的软件开发中打印和打印预览是经常要用到的功能,对于VC6.0中的文档/视图(Doc/View)框架,可以很方便的使用缺省的打印和打印预览。但是,如果应用程序是基于对话框的就没有办法利用这种便利。而很多情况下,基于对话框的程序也需要打印和打印预览功能。那该怎么办呢?这正是本文将要解决的问题。1 实现打印在对话框应用程序中不具备MFC的视和框架交互,要想实现打印和打印预览必须直接获取打印机的设备环境句柄,这时

2、可以设置CPringDialog类中的构造函数的参数,获取打印机的设备环境句柄。利用这个句柄,转换为指针,则按打印流程实现打印任务。(1)从CFrameWnd类派生出主窗口类CMyFrameWnd加入项目,这个类将作为控制类来实现程序的打印和打印预。(2)在CMyFrameWnd中加入打印和打印预览相关的函数,为了方便起见,名字和CView视图类中缺省的打印和打印预览虚函数名相同。但这些函数是以成员函数的形式加入的,而不是重载。这里主要介绍Print和OnPrint函数。Print函数是打印控制函数,

3、由它来弹出打印对话框,取得用户设置信息,如打印机、纸张大小等。还有建立一个打印机DC和设置DOCINFO结构,该结构包含输入输出文件名及其它一些信息,StartDoc函数要该结构作参数。还要设置打印区域,调用打印函数等voidCMyFrameWnd::Print(){CDCdc;CPrintDialogprintDlg(FALSE);if(printDlg.DoModal()!=IDOK)//弹出打印对话框,取得用户设置参数return;dc.Attach(printDlg.GetPrinterDC(

4、));//绑定一个打印机DC到CDCdc.m_bPrinting=TRUE;DOCINFOdi;//初始化打印机的DOCINFOmemset(&di,0,sizeof(DOCINFO));di.cbSize=sizeof(DOCINFO);BOOLbPrintingOK=dc.StartDoc(&di);//开始一个打印任务CPrintInfoInfo;Info.m_rectDraw.SetRect(0,0,dc.GetDeviceCaps(HORZRES),c.GetDeviceCaps(VERTR

5、ES));   //设置打印区域大小OnBeginPrinting(&dc,&Info);//打印初始化for(UINTpage=Info.GetMinPage();page<=Info.GetMaxPage()&&bPrintingOK;page++){dc.StartPage();//开始一个新的打印页Info.m_nCurPage=page;OnPrint(&dc,&Info);//打印bPrintingOK=(dc.EndPage()>0);//打印页结束}OnEndPrinting(&dc,

6、&Info);//打印完成后释放资源if(bPrintingOK)dc.EndDoc();//一个打印任务结束elsedc.AbortDoc();//终止打印任务dc.Detach();//释放打印机DC}OnPrint函数主要设置映射参数,调用对话框的绘图函数等功能,具体如下:voidCMyFrameWnd::OnPrint(CDC*pDC,CPrintInfo*pInfo)//{if(!pDC

7、

8、!pInfo)return;CFont*pOldFont=pDC->SelectObject(&m_P

9、rinterFont);//设置映射参数及边界pDC->SetMapMode(MM_ANISOTROPIC);pDC->SetWindowExt(m_LogicalPageSize);pDC->SetViewportExt(m_PaperSize);pDC->SetWindowOrg(-LEFT_MARGIN*m_CharSize.cx,0);pDC->SetWindowOrg(0,0);pDC->SelectObject(pOldFont);} 2 实现打印预览通过以上几个函数就已经可以打印了,要实

10、现打印预览,还要作一些工作。因为打印预览函数的执行都依赖于CView和CFrameWnd框架,所以,我们建立临时的框架类和视图类,然后调用这个临时视图类的缺省函数OnFilePrint和OnFilePrintPreview。(1)从CView类派生出CMyView类加入项目。并在CMyView类中重载相关的打印和打印预览函数。这个类主要用来传递OnBeginPrinting,OnPrint,OnEndPrinting等相关函数。来源:(http://bl

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。