欢迎来到天天文库
浏览记录
ID:21915282
大小:46.50 KB
页数:6页
时间:2018-10-25
《利用MFC文档视图框架编写打印程序》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、----------专业最好文档,专业为你服务,急你所急,供你所需-------------文档下载最佳的地方利用MFC文档视图框架编写打印程序2006-03-0815:55作者:戎亚新出处:vckbase责任编辑:方舟 本文首先介绍了利用MFC提供的文档视图框架来实现一个打印程序,实现打印预览,在此基础上,同时通过对MFC源代码的深入探讨,提出了利用该方法在对话框上用MFC实现打印功能,结果表明,利用MFC实现打印不仅方便,而且功能很强大,能够根据不同的需求很方便的打印出所需要的格式。本文还实现了一个在对话框中利用MFC实现打印功能的一个框架结构,对于使用者只要使用该结构就可以按照自
2、己的要求打印任何内容。 关键词:VisualC++,MFC,对话框,打印,打印预览 引言 打印程序的编写在windows程序设计中非常有用,针对不同的用户需要,通常用sdk方式实现打印代码量比较大,而且要对打印流程的底层有非常清楚的了解,需要一个程序员有非常深入的打印方面的知识,利用MFC提供的文档视图结构,不但可以实现一些常用的标准界面元素,把数据的处理的界面的处理分离出来,而且其提供的打印功能更是方便快捷,功能强大。打印程序的编写本质是是一种GDI绘图,只是绘图的对象是在打印机的设备描述表,如果对于屏幕的GDI绘图比较熟悉的读者,相信掌握打印程序的编写应该比较容易。 1、文档
3、视图结构的程序的打印程序的编写 通常情况下,一个结构组织的比较好的MFC程序是基于文档视图结构的,这一框架结构给我们提供了很多功能,比如菜单,注册表的关联,文件类型的注册,打印功能,只要我们善于发掘,这些都可以为我们所用,但我们现在只关心如何使用MFC提供的结构来实现打印功能。 在编写打印程序之前,有必要先介绍一下MFC的框架结构,其中的文档视图结构又是这个框架的重点,我们通过分析MFC实现的视图类的原代码就可以看到一个打印程序的执行流程。读者也可以看侯俊杰的《深入浅出MFC》,上面有关于MFC打印的详细流程解释,下面是MFC的打印的函数的实现,该函数名为OnFilePrint它不是
4、一个虚函数,而是响应缺省的COMMAND消息的处理函数,因为MFC提供了向导生成的菜单和工具栏,关于打印的命令ID为ID_FILE_PRINT,而在视图类的MessageMap里有这样一项,ON_COMMAND(ID_FILE_PRINT,CView::OnFilePrint),因此实际使用的过程中可以不用原来的ID,而使用自己的ID如ID_MYPRINT,再在MessageMap里加入ON_COMMAND(ID_MYPRINT,CView::OnFilePrint)即可完成原来一样的功能。ViewPrnt.cpp中有CView的OnFilePrint的函数的具体实现,ViewPrnt.
5、cpp的位置读者自己用windows查找就能找到,这是MFC的源代码,本文把其中的主要代码列出放在下面,直接看下面的分析:voidCView::OnFilePrint(){ //getdefaultprint----------专业最好文档,专业为你服务,急你所急,供你所需-------------文档下载最佳的地方----------专业最好文档,专业为你服务,急你所急,供你所需-------------文档下载最佳的地方info if(OnPreparePrinting(&printInfo)) { if(dlg.DoModal()!=IDOK) return; } OnBeg
6、inPrinting(&dcPrint,&printInfo); OnPrepareDC(&dcPrint,&printInfo); OnPrint(&dcPrint,&printInfo); OnEndPrinting(&dcPrint,&printInfo);//cleanupafterprinting} 其中加粗的代码行为可以重载的虚函数,根据不同的用户,其内容会不同。对于OnPreparePrinting()函数的具体内容必须有returnDoPreparePrinting(pInfo);这是在一个打印过程中最先调用的。当然也可以包含一些其它的打印初始化操作。我们最主要的是要重
7、载三个函数:OnBeginPrinting();OnPrint();OnEndPrinting(); 而以OnPrint最为复杂,它是我们要写大量代码实现我们打印功能的地方。对于默认的OnPrint实现是调用CView的OnDraw,也就是和绘制视图类的客户区的内容完全相同的方法来在打印机上绘图。实际中我们在两种地方绘图的内容是完全不同的,可能用户在客户区绘的是一个曲线,而在打印机上要绘制表格和数据。OnPrint(CDC*pDC
此文档下载收益归作者所有