对话框打印预览及打印

王朝vc·作者佚名  2006-01-17
窄屏简体版  字體: |||超大  

对话框打印预览及打印

作者:张子林

下载源代码

近来我在用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()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);

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航