您的位置:逆风者 VC++ 正文
 添加时间:2007-09-01 原文发表:2007-08-31 人气:248 来源:vckbase.com

本文章共1674字,分2页,当前第1页,快速翻页:
 

一个打印报表的简单的类


作者:李静南


下载源代码
逆风编程精品

一、前两天为公司改程序,其中有一部分是要打印出报表。原来的程序是调用VB写的一个程序。那个程序用VBA方式实现的,在一个空的WORD表格模板里填入数据,让WORD去打印,效果还可以,就是速度很慢。但是这次,上次写代码的人已经不在这里了,我并不想去学VBA,无奈之下找到了一个Rob.A Fraydl写的打印类示例,但是里面没有我要的功能,只是示范了怎么去打印。于是自己重新的封装了一下,基本算是合格了。
程序实现了在指定位置画横线和竖线的功能,可以在画线之前选画笔,以及在指定的区域写文字的功能,并可以设定选择字体。

二、关于类,简单说明如下:

class CPrintRX  

{

public:

	void MoveTo(int xCur, int yCur);

	int GetStrSize(char *str, CSize& size);

	int GetWidth();

	void NewPage();             //开始新的一页

	void EndPage();             //结束一页

	int StartPage();            //开始一页

	void SetDistance (int punkte);

	int SetMargins(int Top, int Bottom, int Left, int Right);

	int EndPrint();             //结束作业

	int StartPrint();           //开始打印作业

	int InitToPrint(char *PrinterName, int Copies);  

	                            //初始化

	int SetFontFace(int iFont, int iFace);

	int AddFont(LOGFONT *lf);   //添加字体

	int AddFont(CFont &newfont);

	int DrawVLine(int x_up, int y_up, int x_bottom, int y_bottom, CPen &newpen);

	int DrawVLine(int x_up, int y_up, int x_bottom, int y_bottom);

	int DrawHLine(int x_left, int y_left, int x_right, int y_right, CPen & newpen);

	int DrawHLine(int x_left, int y_left, int x_right, int y_right);

	int DrawText(char *str, CRect& m_rt, int iFont = 0, int iFace = 0, int format = FORMAT_NORMAL);

	int DrawText(char *str, int iFont = 0, int iFace = 0, int format = FORMAT_NORMAL);

	CPrintRX();

	virtual ~CPrintRX();



private:

	CDC  m_DC;           // 打印的设备内容

	HDC  m_hPrinter;     // 当给定了一个打印机的时候使用

	CDC  m_PrinterDC;    // 没有指定打印机的时候使用



	CFont* m_font[10][4];// 存放字体的的变量

	int  m_nFonts;       // 现有的字体数

	int  m_iFont;        // 使用的字体索引

	int  m_iFace[10];    // 使用的风格索引



	int  m_nCopies;      // 打印的份数

	CSize  m_WorkSize;   // 纸张的物理的宽度,以打印机的像素数为准

	CRect  m_Margins;    // 使用范围,以屏幕的像素数为准

	int  m_yCur;         // 当前的鼠标的位置Y

	int  m_xCur;         // 当前的鼠标的位置X

	int  m_Abstand;      // 行间距

	int  m_iPage;        // 当前的页数

	int  m_LastErrNo;    // 最后一个错误值

	CPrintDialog  *m_pPrintDlg;

	                     // 使用打印机设置对话框

};
在使用时候流程是这样的:
CPrintRX m_Print; m_Print.InitToPrint(NULL, 1); // 调用打印对话框,初始化得到设备内容 m_Print.StartPrint(); // 开始一个新的打印作业 m_Print.StartPage(); // 开始新的一页 CPen newPen; // 新建一个画笔 newPen.CreatePen (PS_SOLID, 3, RGB(0,0,0)); m_Print.DrawVLine(x_pos[0], y_pos[0], x_pos[0], y_pos[29], newPen); // 画横线 m_Print.EndPage(); m_Print.EndPrint(); // 结束打印
 
本文章更多内容1 - 2 - 下一页>>
相关文章

QQ界面的模拟实现(下)
USB有关的编程
杂谈:人与软件
通用权限管理模块的设计与实现
基于TCP的局域网多用户通信、文件传送程序详
通用图像类算法扩充库
ASP.NET 专栏:编写高性能 Web 应用程序的1
用VC轻松实现 ADO.net
如何限制PC机上网
子类化:增强Edit控件为日期输入控件
通过串口收发短消息(下)
编写、加载和存取插件程序(Plug-Ins)
Windows CE下驱动开发基础
介绍一种数据库远程备份方案
QQ魔法表情实现原理
支持数据项查找功能的树控制(CTreeCtrl)类
把 C# 语言开发的控件内嵌在网页里面
使用免费界面换肤软件 USkin
一个关于#include的问题
如何用代码动态添加控件

相关评论


本文章所属分类:首页 VC++

  热门关键字: