一个打印报表的简单的类

随风飘0的叶子

随风飘0的叶子

2016-01-29 11:57

一个打印报表的简单的类,一个打印报表的简单的类

一个打印报表的简单的类


作者:李静南

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


下载源代码

一、前两天为公司改程序,其中有一部分是要打印出报表。原来的程序是调用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;         // 当前的鼠标的位置Yint  m_xCur;         // 当前的鼠标的位置Xint  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(); // 开始新的一页 CPennewPen; // 新建一个画笔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(); // 结束打印
三、在测试程序中的打印效果如下


图一 打印效果扫描图

四、当然,这个类实现的比较简单,还没有画位图的功能,但是可以给做相关的工作的朋友一些帮助。也希望朋友们把它做的更加完善。

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

猜你喜欢

一个打印报表的简单的类

C语言教程 C语言函数
一个打印报表的简单的类

一个简单的数据操作类

Web开发
一个简单的数据操作类

s8lol主宰符文怎么配

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

一个简单的AJAX请求类

Web开发
一个简单的AJAX请求类

一个简单的链表模版类的实现

C语言教程 C语言函数
一个简单的链表模版类的实现

lol偷钱流符文搭配推荐

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

JSP 报表打印的一种简单解决方案

Web开发
JSP 报表打印的一种简单解决方案

JSP报表打印的一种简单解决方案

Java JAVA基础
JSP报表打印的一种简单解决方案

lolAD刺客新符文搭配推荐

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

防止空连接#返回到页面顶端

防止空连接#返回到页面顶端

对齐命令实战运用!(原创)

对齐命令实战运用!(原创)
下拉加载更多内容 ↓