对话框打印预览及打印

windy小狐狸婧

windy小狐狸婧

2016-01-29 11:58

对话框打印预览及打印,对话框打印预览及打印

对话框打印预览及打印

作者:张子林

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/cyuyanjiaocheng/)

下载源代码

  近来我在用VC开发一套MIS时没有用MFC的文档视图模板,所以在打印这上面就只好自己写了一套,用起来感觉还可以,所以写出来大家一起修正一下吧,也许能给大家起点作用吧! 系统UI是基于对话框的,大家如果感觉不错可以进行自我修正! 我们先来看看程序界面:



  其中的学生数据现在我们已从数据库取出放在,ListCtrl控件中了,这样就为我们在打印时提供了方便,不需要再去数据重新提取数据了。在点了打印按钮后,打印预览界面:




在预览界面中,提供了鼠标上下左右滚动功能。好了来说代码吧,在此共用了两个继承 Cdialog 的类:
1、 CpreParent
2、 CpreView
CpreParent 作为最外面的控制窗口, CpreView作为真正的预览窗口。
CpreParent窗口内包括一个平面打印控制工具栏及一个预览窗口CpreView



按钮左右顺序功分别为:
1、报表第一页
2、报表上一页
3、跳转到报表页


4、报表
5、报表最后页
6、退出
7、打印
我们来看在对话框打印按钮中的代码是如果来调用 CpreParent 的:在此我们要用到这样一个结构:

//打印结构typedef struct{int nMaxLine;//ClistCtrl中的最大行数intnCountPage;//一共页数intnCurPage;//当前页码BOOLIsPrint;//是否打印,false 表示预览HWNDhWnd;//窗口句柄HWNDhListView;//列表控件句柄TCHARszTag[256];//其它数据intnTag;//其它数据LPVOIDlpVoid;//其它数据}PRNINFO, *PPRNINFO;//打印按钮代码void CXJWH::OnPrint() //注这里的 CXJWH 为数据管理窗口即打印类的调用窗口{if(CLtv。GetItemCount()<= 0)//CLtv 为ClistCtrl, 这里检测是否有数据在列表中return;PRNINFO PrnInfo = {0};//此为用到的一个结构, 见下面定义PrnInfo。hListView = CLtv。m_hWnd;//ClistCtrl的句柄PrnInfo。hWnd = this->m_hWnd;//当前窗口句柄PrnInfo。IsPrint = FALSE;//当前为预览PrnInfo。nCurPage = 1;//当前页为第一页PrnInfo。nMaxLine = CLtv。GetItemCount();//ClistCtrl中的数据行数CPreParent DlgPreView;//声明打印类DlgPreView。SetCallBackFun(DrawInfo, PrnInfo);//在这里给它设定我们自己的打印函数DlgPreView。DoModal();//预览}
注: 这里的DlgPreView.SetCallBackFun(DrawInfo,PrnInfo);
DrawInfo 是我们在 CXJWH 定义好的静态打印函数。

static void DrawInfo(CDC &memDC,PRNINFO PrnInfo);

由于本人写作水平有限,所以还是请大家看代码吧!

展开更多 50%)
分享

猜你喜欢

对话框打印预览及打印

C语言教程 C语言函数
对话框打印预览及打印

VB中实现带预览的对话框

编程语言 网络编程
VB中实现带预览的对话框

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

关于对话框

编程语言 网络编程
关于对话框

折叠对话框

办公软件
折叠对话框

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

将非模态对话框显示为模态对话框

电脑网络
将非模态对话框显示为模态对话框

自绘对话框

C语言教程 C语言函数
自绘对话框

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

《高达破坏者2》高分数获得要点方法介绍

《高达破坏者2》高分数获得要点方法介绍

HTML参考

HTML参考
下拉加载更多内容 ↓